我想交换两个节点。给定的节点将与下一个节点交换(它是一个单链接列表)。但是,节点有两个字段)。我的代码不像以前那样在节点位置工作
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;
}
}
}
1条答案
按热度按时间2nc8po8w1#
我不认为你是在帮自己选择
temp
以及pointer
作为一个变量名,但让我们看看是否可以解决这个问题:)您首先考虑4个节点:
我想你希望最终得到以下结果:
当你设置
previous.next = pointer.next
第一次,我认为你已经正确地开始了交换过程。问题在接下来的几行。你想要发生的是你自己
previous.next.next = pointer
然后pointer.next = temp
.所以你很接近,但我认为if语句的主体应该是: