給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換后的鏈表。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例:
給定 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; }
代碼中有注釋。