双向链表的第一个和最后一个元素是什么?

3
我有一个关于双向链表的问题。在互联网上我找不到任何适合我的问题的解释。也许我只是太愚蠢了,找不到正确的问题... 这是初始化时链表应该看起来的样子:
[Head][Tail]

“当我向列表中添加值时,实际的头节点和尾节点是否仍然存在,或者它们将在添加值时被覆盖?”
“它应该是这样的:


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

或者像这样:

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

3
头节点和尾节点并不是独立的节点。我们只是将[VALUE1]指定为头节点,将[VALUE5]指定为尾节点。 - Harshit
嗨,欢迎来到Stackoverflow,请编辑您的问题以遵循[mcve],您还可以在如何提问中获取一些提示,提前致谢。顺便说一句,之前的评论是正确的。 - xxxvodnikxxx
3
@xxxvodnikxxx 我个人认为这种概念问题不需要提供最小可复现实例(MCVE)。我觉得这个问题已经很明确了。 - k_ssb
@pkpnd 是的,问题很清楚,但最好能够展示出任何努力的可见性,而不仅仅是问题本身,这就是我的观点。 - xxxvodnikxxx
你可以为头部和/或尾部设置虚拟节点,这并不是不可能的。你可以阅读有关哨兵节点的内容。但对于双向链表,通常不需要这样做。 - Ole V.V.
1
@xxxvodnikxxx 我不知道你在说什么,这个问题完全没有问题。 - ruohola
2个回答

5
当列表被初始化时,它就像这样:
[]
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
当列表为空时,您应该设计它以便头部和尾部可以为null,而列表应该如下所示:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接