【问题标题】:First and Last Element of a Doubly Linked List双链表的第一个和最后一个元素
【发布时间】:2018-05-04 11:27:03
【问题描述】:

我有一个关于双向链表的问题。我在互联网上找不到任何适合我的问题的解释。也许我只是愚蠢地找到正确的问题..

这是链表在初始化时的样子:

[Head][Tail]

但是当我将值添加到列表时,实际的头和尾节点是否仍然存在,或者当我添加值时它们会被覆盖?

应该是这样的:

[Head][Value1][Value2][Value3][Value4][Tail]

或者像这样:

[Value1][Value2][Value3][Value4][Value5]

【问题讨论】:

  • 头部或尾部不是单独的节点。我们只是将 [VALUE1] 指向头部,将 [VALUE5] 指向尾部节点。
  • 嗨,欢迎来到 Stackoverflow,请编辑您的问题以关注 minimal reproducible example,还有一些提示您可以在 How to ask 获得,提前致谢。顺便说一句,以前的评论是正确的
  • @xxxvodnikxxx IMO 这种概念性问题不需要 MCVE。这个问题对我来说非常清楚。
  • @pkpnd 是的,问题很明确,但最好能看到任何努力,而不仅仅是问题,这是我的观点。
  • 这并不是说你不能有头部和/或尾部的虚拟节点。你可以阅读sentinel nodes。但是,对于通常没有的双向链表。

标签: java algorithm list


【解决方案1】:

当一个列表被初始化时是这样的:

[]
Head=null, Tail=null

插入Value1后就变成了

[Value1]
Head = Value1, Tail = Value1

插入Value2后变成

[Value1][Value2]
Head = Value1, Tail = Value2

您没有单独的 Head 和 Tail 节点。 Head 和 Tail 只是对现有节点的引用。因此,真实节点只是 Value* 节点,而 Head 和 Tail 只是引用。

【讨论】:

    【解决方案2】:

    您应该设计它,以便当列表为空并且列表如下所示时 head 和 tail 可以为空:

    [Value1][Value2][Value3][Value4][Value5]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多