“ first.next = second.next;”是什么意思

时间:2018-08-27 20:02:21

标签: java

此代码将成对交换节点,“ 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;
}

}

1 个答案:

答案 0 :(得分:0)

由于我们知道dummy.next是列表的头并且我们知道currdummy是相同的,因此我们知道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 

因此,切换了配对的顺序。剩下的代码将移动到下一对,以准备好交换它们。