链接:https://leetcode-cn.com/explore/learn/card/linked-list/195/classic-problems/753/
思路:分别链接奇偶链表,注意在奇偶链表结束时要加空指针,最后将奇链表的尾链到偶链表的头就可以了。
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(head==NULL||head->next==NULL) return head;
ListNode* evenHead=new ListNode(0);
ListNode* p1=head;
ListNode* p2=evenHead;
while(p1->next)
{
p2->next=p1->next;
p2=p2->next;
if(p1->next->next)
{
p1->next=p1->next->next;
p1=p1->next;
}
else
{
p1->next=NULL;
}
}
p2->next=NULL;
p1->next=evenHead->next;
return head;
}
};