常规的链表处理,需要另外的一个指针next记录下两个节点之后的第三个节点,保证节点不会丢失找不到。
(leetcode24)
class Solution { public ListNode swapPairs(ListNode head) { if(head == null){ return null; } ListNode dummyHead = new ListNode(0); dummyHead.next = head; ListNode p = dummyHead; while(p.next !=null && p.next.next != null){ ListNode node1 = p.next; ListNode node2 = node1.next; ListNode next = node2.next; node2.next = node1; node1.next = next; p.next = node2; p = node1; } return dummyHead.next; } }