打印双链表的内容
Printing the contents of a double linked list
我有一个双链表,我想使用 Console.WriteLine()
打印它。我遇到的问题是我知道如何根据停止条件(即 node.next 为空时)打印仅包含 Next 节点的列表,但这是一个包含 Next 和 Previous 的双链表,列表中的每个节点都连接到另一个节点,因此没有 node.next == null
为 True 的情况。
这种列表的停止条件是什么?现在我有一个无限循环,一遍又一遍地打印列表。
您给出的解释是关于CircularLinkedList
。
DoublyLinkedList
中最后一个元素的 next
应该有 '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);
}
如果你在一个方向上迭代双链表(例如:总是下一个,或者总是前一个)应该有一个有限的迭代。
如果你仍然有一个无限迭代,这意味着你在列表中有一个循环。使同一个链表中2个或多个节点的"next"或"previous"得到一个环
循环列表中还有一个"beginning",也是它的"end"。所以你从节点 A 开始打印,一直打印到节点的下一个指针指向 A。
如果你有一个循环链表,你应该在开始迭代之前保存对列表第一个节点的引用,下次你传递它时,只需将当前光标节点与该引用进行比较如果它们相等(在那种情况下应该是真的),那么这就是你的停止条件
我有一个双链表,我想使用 Console.WriteLine()
打印它。我遇到的问题是我知道如何根据停止条件(即 node.next 为空时)打印仅包含 Next 节点的列表,但这是一个包含 Next 和 Previous 的双链表,列表中的每个节点都连接到另一个节点,因此没有 node.next == null
为 True 的情况。
这种列表的停止条件是什么?现在我有一个无限循环,一遍又一遍地打印列表。
您给出的解释是关于CircularLinkedList
。
DoublyLinkedList
中最后一个元素的 next
应该有 '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);
}
如果你在一个方向上迭代双链表(例如:总是下一个,或者总是前一个)应该有一个有限的迭代。
如果你仍然有一个无限迭代,这意味着你在列表中有一个循环。使同一个链表中2个或多个节点的"next"或"previous"得到一个环
循环列表中还有一个"beginning",也是它的"end"。所以你从节点 A 开始打印,一直打印到节点的下一个指针指向 A。
如果你有一个循环链表,你应该在开始迭代之前保存对列表第一个节点的引用,下次你传递它时,只需将当前光标节点与该引用进行比较如果它们相等(在那种情况下应该是真的),那么这就是你的停止条件