java - 双向链表空的情况

标签 java data-structures doubly-linked-list

在我的演讲中没有给出如果双向链表为空则

header.next==tail;

或者

tail.prev==header; 

但我觉得恰好有两个节点时就是这种情况。空壳不应该是 head==null.
我不知道我是否正确。我对这个主题还是陌生的。有人可以澄清一下

最佳答案

有两种常见的方式来存储双链表:

  • headtail 指代树中的实际节点。

    head variable       tail variable
      |                   |
      V                   V
    first -> second -> third -> null
    

    在这种情况下,您是正确的 - head 将为 null

  • headtail 成为特殊节点(称为 "sentinel nodes" ,正如另一个答案中指出的那样),它们实际上不包含任何数据并且通过nextprev分别指向列表中的第一个和最后一个节点。

    head variable                       tail variable
      |                                   |
      V                                   V
    head -> first -> second -> third -> tail -> null
    node                                node
    

    在这种情况下,header.next == tail 表示列表为空。

    可以使用这种方法而不是上述方法来稍微简化实现并使代码更快一些 - 无需为删除或插入第一个或最后一个节点做出特殊规定。

    <

关于java - 双向链表空的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690948/

相关文章:

c# - 如何获取链表的某一部分

c - 代码的时间复杂度或大O

c++ - 实现指向对象的指针的模板化双向链表

java - 访问 ReaderInterceptor/ContainerRequestFilter 中形成的元信息以在 WriterInterceptor 中使用

java - 如何在 Java 中正确使用 "throws clause"?

data-structures - 保持多维整数框的质心并删除一些 "orthants"

c++ - 如何访问类变量?公共(public)方法/ setter/getter VS。遗产。有什么好处和坏处

java - 如何将双向链表中的节点与其前一个节点交换

java - 使用 Spring Rabbitmq Stomp 的持久队列

java - HttpURLConnection 是连接重置或管道损坏