java如何将这两个链表分别交错?
我正试图交错两个列表,以便:
列表1以{a1,a2,a3,a4,a5}开头 清单2以{b1,b2,b3,b4,b5}开头
我希望他们是 {a1、b2、a3、b4、a5} {b1、a2、b3、a4、b5}
这是我的代码:
public void interleave(A3LinkedList other) {
A3Node thisCurrent = this.head;
A3Node otherCurrent = other.head;
int count = 1;
while(count <= this.length){
System.out.println("List1 current at loop "+ count + ": " + thisCurrent); // just to debug
System.out.println("List2 current at loop "+ count + ": " + otherCurrent);
A3Node tempThis = thisCurrent;
A3Node tempOther = otherCurrent;
//if(count%2 == 0){ //if count is even, aka every second object in list
thisCurrent = tempOther; // makes thisCurrent same as otherCurrent
otherCurrent = tempThis; // makes otherCurrent same as temp saved
//}
thisCurrent = thisCurrent.next;
otherCurrent = otherCurrent.next;
count ++;
}
}
while循环中println方法的输出告诉我节点交换正确,但另一个测试程序的最终结果告诉我列表根本没有改变
while循环内部的输出:
List1 current at loop 1: A
List2 current at loop 1: L
List1 current at loop 2: M
List2 current at loop 2: B
List1 current at loop 3: C
List2 current at loop 3: N
List1 current at loop 4: O
List2 current at loop 4: D
List1 current at loop 5: E
List2 current at loop 5: P
List1 current at loop 6: Q
List2 current at loop 6: F
List1 current at loop 7: G
List2 current at loop 7: R
测试仪的输出: {ABCDEFG} {LMNOPQR} 测试失败:testInterleave在203行 测试失败:testInterleave在第204行
正如你所看到的,测试仪的输出不是它应该的样子,它没有通过测试。 为什么
# 1 楼答案
您的代码无法工作,因为您正在方法中创建本地对象引用,并且只重新分配这些本地引用。您需要重新分配引用的成员(即
A3Node.next
)及其指向的内容。比如: