打印双链表的内容

时间:2017-05-14 17:26:26

标签: c# node.js doubly-linked-list

我有一个双链表,我想用Console.WriteLine()打印。我遇到的问题是我知道如何根据停止条件(当node.next为null时)只打印一个Next节点的列表,但这是一个包含Next和Previous的双链表,其中每个列表中的节点连接到另一个节点,因此不存在node.next == null为True的情况。

此类清单中的停止条件是什么?现在我有一个无限循环,一遍又一遍地打印列表。

4 个答案:

答案 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)

如果你有一个循环链表,你应该在开始迭代之前将引用保存到列表的第一个节点,并在下次传递它时,只需将当前光标节点与该引用进行比较,如果它们是平等的(在那种情况下应该是真的),那就是你的停止条件