题解 | #链表的奇偶重排#
链表的奇偶重排
https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3
struct ListNode* oddEvenList(struct ListNode* head ) {
// write code here
struct ListNode *oddp=head,*evenHead,*evenEnd,*temp;
if(head==NULL||head->next==NULL||head->next->next==NULL)
return head;
temp=oddp->next;
oddp->next=temp->next;
temp->next=NULL;
evenHead=temp;
evenEnd=temp;
oddp=oddp->next;
while(oddp!=NULL&&oddp->next!=NULL)//分别对应结点为偶数和奇数个
{
temp=oddp->next;
oddp->next=temp->next;
temp->next=NULL;
evenEnd->next=temp;
evenEnd=temp;
temp=oddp;
oddp=oddp->next;
}
if(!oddp)
temp->next=evenHead;//结点为偶数个时
else
oddp->next=evenHead;//结点为奇数个时
return head;
}
查看11道真题和解析