题解 | #链表的奇偶重排#
链表的奇偶重排
http://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 用队列赖皮 * * * @param head ListNode类 * @return ListNode类 */ ListNode* oddEvenList(ListNode* head) { queue<int>even,odd; int idx=1; for(ListNode *p=head;p;p=p->next) { if(idx%2==0) even.push(p->val); else odd.push(p->val); ++idx; } idx=1; for(ListNode *p=head;p;p=p->next) { if(!odd.empty()){ p->val=odd.front(); odd.pop(); } else if(!even.empty()){ p->val=even.front(); even.pop(); } ++idx; } return head; } };