1.题目和原题链接
2.解题思路
1.当链表为空或者只有一个节点时直接返回
2.除上述情况外,再分类讨论,如下图所示
3.代码
ListNode* oddEvenList(ListNode* head) {
if(head==NULL||head->next==NULL)//0,1,2个节点直接返回
return head;
ListNode* odd=head;
ListNode* even=head->next;
ListNode* rat_even=even;
ListNode* prev=odd;
while(odd&&even)
{
prev=odd;
odd->next=odd->next->next;
odd=odd->next;
if(even->next)//防止越界
{
even->next=even->next->next;
even=even->next;
}
}
if(odd)
odd->next=rat_even;
else
prev->next=rat_even;
return head;
}
};