首先找到链表的首尾节点s,e,然后用p将s~e之间的偶数节点拆下来并且插入链表末端即可。
ListNode* oddEvenList(ListNode* head) {
if(head==NULL||head->next==NULL||head->next->next==NULL) return head;
ListNode *p = head->next,*q = head->next;
while(q->next!=NULL) q=q->next;
ListNode *r = q,*s = head;
bool flag = true;
do
{
if(p==r) flag = false;
s->next = p->next;
p->next = q->next;
q->next = p;
q = p;
if(s->next!=r) s=s->next;
else flag = false;
p = s->next;
}
while(flag);
return head;
}