【发布时间】:2021-11-18 12:15:08
【问题描述】:
我目前正在创建一个非常标准的循环链表,并且想要反转它。如果给定 3 个节点 Purple、Happy 和 Rabbit,它应该返回 Rabbit -> Happy -> Purple。现在,出于某种原因,它打印出快乐 -> 紫色 -> 紫色。我认为我的 do while 循环中的逻辑存在问题,因为我对链表很陌生。
我没有包含用于定义节点函数的其他类,因为它们包含其他不相关的代码很长,而且我知道问题不存在(向前打印工作正常)。任何指针表示赞赏,如果需要其他任何东西,请告诉我!
public void reverse() {
String result = " ";
Node current = head;
if (current != null) {
do {
current = current.prev;
result += current + ", ";
} while (current != head);
} else {
result += "EMPTY";
}
System.out.println(result);
}
【问题讨论】:
-
您的代码对我来说看起来不错,但原始列表似乎不像您期望的那样循环链接。在我看来,您的头不是引用列表中的第一个元素,而是最后一个元素 (
RABBIT)。并且您的结构是PURPLE->HAPPY->RABBIT和PURPLE自我引用,因为它是父级,而RABBIT没有子级。基本上是PURPLEPURPLEHAPPYRABBIT->null -
好点。经过进一步调查,我意识到我正在处理一个循环双向链表,所以我猜我必须稍微改变我的方法。
-
我看不出您的代码有任何问题。问题在于
head,您应该在if (current != null)之前打印它以进行调试。很可能它具有价值,Rabbit。
标签: java list while-loop