gpt4 book ai didi

java - Java 循环双向链表 - 说明

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

目前,我正在编写一个循环双向链表,我的任务已经完成,但是我在100%理解代码方面有一个小问题。

这是代码:

if (counter == 0) {
startpoint = newNode;
startpoint.next = startpoint;
startpoint.prev = startpoint;
head = startpoint;
currentNode = newNode;

} else {
newNode.prev = startpoint.prev;
newNode.next = startpoint;
startpoint.prev.next = newNode; <- this is, where I have problems
startpoint.prev = newNode;
head = startpoint;
currentNode = newNode;
}
counter++;
}

第一部分非常清楚,只是描述了当调用下一个或第一个方法时,第一个节点(如果没有其他节点)将指向其自身。在else语句之后,第一行描述了第一个节点可以指向第二个节点,第二个节点可以指向前一个节点,对吧?else 之后的第二行只是描述最后一个节点指向第一个节点。第四行描述了,如果调用 prev 方法,则第一个节点指向最后一个节点,因此循环闭合。但第三行到底描述了什么?该代码绝对有效。

感谢您的宝贵时间!

问候多米尼克

最佳答案

您的列表是循环的。

startpoint.prev是起点之前的元素,因此它是列表的最后一个元素。

举个例子,这是您的列表:A>B>C,您尝试添加D

这一行:startpoint.prev.next = newNode;将链接当前的最后一个元素(CA.prev == C ) 到你的新元素。 (C.next = D)

这一行startpoint.prev = newNode;将把新元素设置为列表的最后一个元素(A.prev = D)。

关于java - Java 循环双向链表 - 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798090/

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