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

美团成长空间 2663人发布