gpt4 book ai didi

java - java中的链表反向函数

转载 作者:行者123 更新时间:2023-11-30 10:46:13 25 4
gpt4 key购买 nike

我是编程新手,谁能解释一下下面的代码是如何工作的?

Node reverse(Node node) {
Node prev = null;
Node current = node;
Node next = null;

while (current != null) {
next = current.next;
current.next = prev;

prev = current;
current = next;
}

node = prev;
return node;
}

我只想知道 while 循环中到底发生了什么。

提前致谢。

最佳答案

基本上它会尝试反转一个链表,您可能知道,每个Node 都有两个指针:next上一个。为了反转链表,我们应该以如下图所示的方式更改这些指针(我们想将蓝色链更改为红色链)

enter image description here

例如想象一下图片中的 Node 3,它的 prev 字段一直指向 (Node 2) 将是Node 3 的下一个节点(在我们想要的红色链中),因此 current.next = prev;(第 2 行)是有意义的。但是因为我们想在循环的下一次迭代中到达节点4,所以在这之前我们写next = current.next;(第1行)来保存next指针Node 3current 指向 Node 4,最后在每次迭代结束时我们用 current = next 放回去;(第 4 行)迭代到下一个 Node
在下一次迭代中,我们需要做同样的事情,所以现在 prev 应该指向 Node 3 这就是为什么我们有 prev = current;(第 3 行)准备 prev

Picture reference

关于java - java中的链表反向函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36674149/

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