java—将给定节点与下一个节点交换

jecbmhm3  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(325)

我想交换两个节点。给定的节点将与下一个节点交换(它是一个单链接列表)。但是,节点有两个字段)。我的代码不像以前那样在节点位置工作

public void swapNodes(int given_d1, double given_d2) {
    Node pointer = first;
    Node previous=null;

    while (pointer != null&& pointer.next != null) {
        previous=pointer;
        pointer=pointer.next;
        if (pointer.data1 == given_d1 && pointer.data2 == given_d2) {
             Node temp= pointer.next.next;
             previous.next=pointer.next;
             previous=previous.next;
             previous.next=pointer.next;
             pointer.next=temp;
        } 
    }
}
2nc8po8w

2nc8po8w1#

我不认为你是在帮自己选择 temp 以及 pointer 作为一个变量名,但让我们看看是否可以解决这个问题:)
您首先考虑4个节点:

previous -> pointer -> ? -> temp

我想你希望最终得到以下结果:

previous -> ? -> pointer -> temp

当你设置 previous.next = pointer.next 第一次,我认为你已经正确地开始了交换过程。
问题在接下来的几行。你想要发生的是你自己 previous.next.next = pointer 然后 pointer.next = temp .
所以你很接近,但我认为if语句的主体应该是:

if (pointer.data1 == given_d1 && pointer.data2 == given_d2) {
             Node temp = pointer.next.next;
             previous.next = pointer.next;
             previous.next.next = pointer;
             pointer.next = temp;
        }

相关问题