2022年11月7日 星期一

[328] Odd Even Linked List

啊好像還可以更精簡啊...(遠目)
奇怪linked list 總是有一種礙手礙腳的感覺><
一開始想的太難了!想說是要一邊接起來然後就互換這樣
其實只要把偶數Node 想成另外接, 最後再整個接去前半的尾巴就好了
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* oddEvenList(struct ListNode* head){
if (head==NULL || head->next ==NULL)
return head;
struct ListNode *evenHead= head ->next;
struct ListNode *pOdd, *pEven;
for(pOdd=head,pEven=evenHead;(pOdd !=NULL && pEven !=NULL);)
{
if(pEven->next !=NULL)
{
pOdd->next=pEven->next;
pOdd=pOdd->next;
pEven->next=pOdd->next;
pEven=pEven->next;
}
else
{
pOdd->next=NULL;
pEven=NULL;
}
}
pOdd->next=evenHead;
if(pEven != NULL)
pEven->next==NULL;
return head;
}

沒有留言:

張貼留言