鏈表節點兩兩交換


給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換后的鏈表。

你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。

 

示例:

給定 1->2->3->4, 你應該返回 2->1->4->3.

 

public static ListNode swapParis(ListNode head){
        /*聲明一個啞節點*/
        ListNode dumb=new ListNode(0);
        /*啞節點的下一個節點指向頭節點*/
        dumb.next=head;
        /*聲明一個引用指向啞節點*/
        ListNode temp=dumb;
        /*如果啞節點的下一個節點和下下一個節點不為空繼續轉換*/
        while (dumb.next!=null&&dumb.next.next!=null){
            /*要轉換的第一個節點(稱為curr)*/
            ListNode curr=dumb.next;
            /*要轉換的第二個節點(稱為next)*/
            ListNode next=dumb.next.next;
            /*指定curr的下一個是next的下一個*/
            curr.next=next.next;
            /*指定next的下一個是curr*/
            next.next=curr;
            /*指定啞節點的下一個是next*/
            dumb.next=next;
            /*啞節點引用指向啞節點的下下一個節點*/
            dumb=dumb.next.next;
        }
        /*返回啞節點的沒改變引用的下一個節點*/
        return temp.next;
    }
View Code

 

代碼中有注釋。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM