常规的链表处理,需要另外的一个指针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;
}
}