我有一个双链表,我想用Console.WriteLine()
打印。我遇到的问题是我知道如何根据停止条件(当node.next为null时)只打印一个Next节点的列表,但这是一个包含Next和Previous的双链表,其中每个列表中的节点连接到另一个节点,因此不存在node.next == null
为True的情况。
此类清单中的停止条件是什么?现在我有一个无限循环,一遍又一遍地打印列表。
答案 0 :(得分:1)
您提供的解释是CircularLinkedList
。
next
中最后一个元素的DoublyLinkedList
应该有' null'。
现在,如果您的问题是关于CircularLinkedList
,那么您应该有一个结束指针
打印直到tmp.next
到达end
指针。
更新1
通常这应该是CircularLinkedList
public void PrintAll()
{
Node<T> tmp = start;
do
{
Console.WriteLine(tmp.data.ToString());
tmp = tmp.next;
} while (tmp != end.next);
}
答案 1 :(得分:0)
如果你在一个方向上迭代双链表(例如:总是下一个,或者总是在前一个),那么应该有一个有限的迭代。
如果仍然有无限次迭代,则意味着列表中有一个循环。通过使同一节点成为同一链表中2个或更多节点的“下一个”或“前一个”,可以获得一个循环。
答案 2 :(得分:0)
在循环列表中仍然存在“开始”,这也是它的“结束”。因此,您从节点A开始打印,然后进行打印,直到节点的下一个指针指向A。
答案 3 :(得分:0)
如果你有一个循环链表,你应该在开始迭代之前将引用保存到列表的第一个节点,并在下次传递它时,只需将当前光标节点与该引用进行比较,如果它们是平等的(在那种情况下应该是真的),那就是你的停止条件