給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換後的鏈表。算法
給定 1->2->3->4, 你應該返回 2->1->4->3.spa
你的算法只能使用常數的額外空間。 code
你不能只是單純的改變節點內部的值,而是須要實際的進行節點交換。blog
該題屬於基本的鏈表操做題。get
設置一個虛擬頭結點dummyHead
it
設置須要交換的兩個節點分別爲node1
、node2
,同時設置node2
的下一個節點next
class
將node2
節點的next設置爲node1
節點List
將node1
節點的next設置爲next
節點d3
將dummyHead
節點的next設置爲node2
結束本輪操做
接下來的每輪操做都按照上述進行。
public static ListNode swapPairs(ListNode listNode) { if (listNode == null) { return null; } ListNode head = new ListNode(-1); head.next = listNode; ListNode pHead = head; while (pHead.next != null && pHead.next.next != null) { ListNode node1 = pHead.next; ListNode node2 = pHead.next.next; ListNode next = node2.next; node2.next = node1; node1.next = next; pHead.next = node2; pHead = node1; } return head.next; }