class Solution {
public ListNode swapPairs(ListNode head) {
ListNode cur;
ListNode dummyHead = new ListNode();
cur = dummyHead;
dummyHead.next = head;
ListNode firstNode;
ListNode secondNode;
cur.next = head;
while (cur.next != null && cur.next.next != null){
ListNode temp = new ListNode();
temp = cur.next.next.next;
firstNode = cur.next;
secondNode = cur.next.next;
cur.next = secondNode;
secondNode.next = firstNode;
firstNode.next = temp;
cur = secondNode.next;
}
return dummyHead.next;
}
}
本体思路:这道题其实也简单,增加一个虚拟头结点dummyhead(作用:为了方便操作头结点),然后一个firstNode结点指向需要交换的第一个节点,secondNode指向需要交换的第二个节点,之后定义一个cur指向firstNode前一个结点(是为了让结点完成交换),之后就是赋值,这时候我们会发现一个问题,找不到交换节点后面的第一个节点,因此交换后的结点的后面的结点寻找不到,所以定义一个temp指向交换节点后面的第一个节点。最后返回头结点dummyHead.next