gpt4 book ai didi

java - 链表递归

转载 作者:行者123 更新时间:2023-12-01 11:27:02 25 4
gpt4 key购买 nike

public class LinkedList {

Node head = null;
int nodeCount= 0;
int counter = 0;

LinkedList() {
head = null;
}

public Node reverseTest(Node L) {
if(L == null || L.next ==null) {
return L;
}

Node remainingNode = reverseTest(L.next);
Node cur = remainingNode;
while(cur.next !=null) {
cur=cur.next;
}

L.next = null;
cur.next = L;

return remainingNode;
}
}

public class LinkedListDemo {

public static void main(String[] args) {

LinkedList FriendList = new LinkedList();
FriendList.insertNode("First");
FriendList.insertNode("Second");
FriendList.insertNode("Third");
FriendList.insertNode("Fourth");

FriendList.reverseTest(FriendList.head);
// FriendList.copyObject(FriendList.head);
String NameList = FriendList.toString();
System.out.println(NameList);
System.out.println("Finish");

}
}

困惑:

reverseTest 方法中,从该行返回第一个 L 值后递归

if(L == null || L.next ==null) {
return L;
}

我们将值传递给这一行中的remainingNode

Node remainingNode =  reverseTest(L.next);

然后我们将其复制到cur变量

 Node cur = remainingNode;

当我们到达终点线

cur.next = L; 

它用 L 更新 cur.next,但它也会更新

remainingNode.next = L

我不明白。如何?有人可以指出我应该检查什么吗?

最佳答案

cur 和剩余节点指向相同的内存地址。无论你对一个人做什么都会影响另一个人。您希望它们指向两个不同的内存位置。

关于java - 链表递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com