【问题标题】:Determine the first node in a Linked List确定链表中的第一个节点
【发布时间】:2011-05-24 21:21:24
【问题描述】:

如果链表的最后一个节点连接到第一个节点,则形成一个环。 那么如何识别链表中的哪些节点是第一个节点和最后一个节点呢?

【问题讨论】:

  • 一个圆圈的开始是什么?
  • 如果节点形成一个环,则没有第一个节点,也没有最后一个节点。什么意思?
  • 顺便说一下,您所拥有的称为“循环(ly)链表”。

标签: c++ c linked-list nodes


【解决方案1】:

你不会的。如果是环,那么 first 和 last 是没有意义的。任何节点都可以是第一个或最后一个。

如果您将“first”定义为“created first”,那么您可能希望向节点添加一些排序信息以便能够知道这一点。

【讨论】:

    【解决方案2】:

    大概会有一个指向链表第一个节点的指针(你需要一种进入链表的方法)。此外,在这种情况下,维护指向列表中最后一个节点的指针很方便。

    如果您更具体地了解您需要了解的内容,我可以为您提供更多帮助。

    【讨论】:

      【解决方案3】:

      您所描述的是一个循环链表。仅基于维护最后一个节点就可以知道列表中的第一项和最后一项。从逻辑上讲,这要求它的后继节点是第一个节点。

      维基百科有更多关于它的信息:https://en.wikipedia.org/wiki/Linked_list#Circularly_linked_list

      【讨论】:

        【解决方案4】:

        如果您尝试实现循环列表,请查看此处http://en.wikipedia.org/wiki/Linked_list#Circularly_linked_list

        【讨论】:

          【解决方案5】:

          在创建Linkedlist时,将第一个节点的地址存储在一个变量中(最好是私有变量),以便在任何时候都可以将该地址与当前节点的地址进行比较

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-02-09
            • 1970-01-01
            • 1970-01-01
            • 2016-08-10
            相关资源
            最近更新 更多