此代码将成对交换节点,“ first.next = second.next;”是什么意思? 示例:如果给定1-> 2-> 3-> 4,则列表应返回为2-> 1-> 4-> 3。
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode curr = dummy;
while(curr.next!=null && curr.next.next!=null){
ListNode first = curr.next;
ListNode second = curr.next.next;
first.next = second.next;
curr.next = second;
curr.next.next = first;
curr = curr.next.next;
}
return dummy.next;
}
}
答案 0 :(得分:0)
由于我们知道dummy.next
是列表的头并且我们知道curr
与dummy
是相同的,因此我们知道first = curr.next;
的意思是第一个是列表的头。
因此,second = curr.next.next
告诉我们second
是列表中第一个元素之后的元素。
此功能的目标是将元素成对交换。当前列表如下:
curr -> first -> second -> second.next -> second.next.next -> ...
但是,当我们执行first.next = second.next;
时,订单发生变化,我们得到:
curr -> first -> second.next
然后,curr.next = second;
行再次更改列表,并为我们提供:
curr -> second -> first -> second.next
因此,切换了配对的顺序。剩下的代码将移动到下一对,以准备好交换它们。