leetcode算法題--奇偶鏈表

原理鏈接:https://leetcode-cn.com/problems/odd-even-linked-list/

1、雙指針
在這裏插入圖片描述

ListNode* oddEvenList(ListNode* head) {
    if(head==NULL||head->next==NULL) return head;
    ListNode *p=head,*q=head->next;
    ListNode *pre_p=p,*pre_q=q;
    while(p->next!=NULL&&q->next!=NULL){
        p->next=p->next->next;
        if(p->next!=NULL) p=p->next;
        q->next=q->next->next;
        if(q->next!=NULL) q=q->next;
    }
    p->next=pre_q;
    q->next=NULL;
    return pre_p;
}

2、雙鏈表

利用兩個奇偶鏈表odd和even分別存儲原鏈表的節點,最後將偶鏈表even接在奇鏈表odd後面,並且可以直接用odd和even替代迭代指針p,使代碼更加簡潔

ListNode* oddEvenList(ListNode* head) {
    if(head==NULL) return head;
    ListNode *odd=head,*even=head->next,*evenhead=head->next;
    while(even!=NULL&&even->next!=NULL){
        odd->next=even->next;
        odd=odd->next;
        even->next=odd->next;
        even=even->next;
    }
    odd->next=evenhead;
    return head;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章