题解 | #链表的奇偶重排#
链表的奇偶重排
https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3
/** 思路:两个指针s,d分别从第一个和第二个节点开始,修改后继指针指向对方的下一个节点。 遍历完链表后奇数链表最后一个节点指向偶数链表的起始节点 **/ struct ListNode* oddEvenList(struct ListNode* head ) { if(!head || !head->next || !head->next->next) { return head; } struct ListNode* s = head; struct ListNode* d = head->next; struct ListNode* dhead = d; while (s && d) { s->next=d->next; if(!s->next) { break; } s=s->next; d->next=s->next; d=d->next; } s->next = dhead; return head; }