Java 双链表空情况

Java 双链表空情况,java,data-structures,doubly-linked-list,Java,Data Structures,Doubly Linked List,在我的讲座中,如果双链表是空的,那么 header.next==tail; 或 但我觉得只有两个节点的情况就是这样。这个空箱子不是应该是吗 head==null 我不知道我是否正确。我对这个问题还不熟悉。有人能澄清一下吗?这个双链接列表同时使用了头和尾。这些节点实际上并不包含列表的元素,但通过使head和tail案例更像列表的中间部分,有助于使某些算法稍微好一点 如果列表没有使用sentinel,那么空的大小写将是head==null,两个元素的大小写将有头。next==tail和尾。prev

在我的讲座中,如果双链表是空的,那么

header.next==tail;

但我觉得只有两个节点的情况就是这样。这个空箱子不是应该是吗
head==null


我不知道我是否正确。我对这个问题还不熟悉。有人能澄清一下吗?

这个双链接列表同时使用了头和尾。这些节点实际上并不包含列表的元素,但通过使head和tail案例更像列表的中间部分,有助于使某些算法稍微好一点


如果列表没有使用sentinel,那么空的大小写将是
head==null
,两个元素的大小写将有
头。next==tail
尾。prev==header

这个双链接列表同时使用头和尾。这些节点实际上并不包含列表的元素,但通过使head和tail案例更像列表的中间部分,有助于使某些算法稍微好一点


如果列表没有使用Sentinel,那么空的大小写将是
head==null
,两个元素的大小写将有
标题。next==tail
tail.prev==header

存储双链接列表有两种常用方法:

  • head
    tail
    引用树中的实际节点

    head variable       tail variable
      |                   |
      V                   V
    first -> second -> third -> null
    
    在这种情况下,您是正确的-
    head
    将为
    null

  • head
    tail
    成为特殊节点(调用,如另一个答案中所指出的),它们实际上不包含任何数据,并分别通过
    next
    prev
    指向列表中的第一个和最后一个节点

    head variable                       tail variable
      |                                   |
      V                                   V
    head -> first -> second -> third -> tail -> null
    node                                node
    
    在这种情况下,
    header.next==tail
    表示列表为空

    可以使用这种方法而不是上面的方法来简化实现,并使代码更快一点-不需要为删除或插入第一个或最后一个节点做特殊的准备


存储双链接列表有两种常见方法:

  • head
    tail
    引用树中的实际节点

    head variable       tail variable
      |                   |
      V                   V
    first -> second -> third -> null
    
    在这种情况下,您是正确的-
    head
    将为
    null

  • head
    tail
    成为特殊节点(调用,如另一个答案中所指出的),它们实际上不包含任何数据,并分别通过
    next
    prev
    指向列表中的第一个和最后一个节点

    head variable                       tail variable
      |                                   |
      V                                   V
    head -> first -> second -> third -> tail -> null
    node                                node
    
    在这种情况下,
    header.next==tail
    表示列表为空

    可以使用这种方法而不是上面的方法来简化实现,并使代码更快一点-不需要为删除或插入第一个或最后一个节点做特殊的准备


谢谢。我们没有学过哨兵。在注释中,双链接列表有一个指向序列中第一个节点的引用头和一个指向序列最后一端的引用尾“。在这种情况下,我认为尽管给出了哨兵方法的代码,因为head和tail指的是树中的实际节点,正确的应该是
head==null
是的,我同意你的说法,即
head==null
表示一个空列表,但也有可能是措辞错误。谢谢。我们没有学习哨兵。在注释中,给出了“双链接列表”有一个引用,头指向序列中的第一个节点,引用,尾指向序列的最后一端“。在这种情况下,我认为尽管给出了哨兵方法的代码,因为head和tail指的是树中的实际节点,正确的应该是
head==null
是的,我同意你的说法,即
head==null
表示一个空列表,但也可能是该短语错误。