题解 | #链表的奇偶重排#
链表的奇偶重排
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;
}
};

