【问题标题】:Java circular linked list without a head or tail?没有头或尾的Java循环链表?
【发布时间】:2014-03-02 03:36:44
【问题描述】:

我的书在一页上只提到了循环链表,并说您可以通过使单链表或双链表的头部和尾部相互链接来创建它们。但是随后编程练习说:

"循环链表不需要头部或尾部。相反,您只需要对当前节点的引用,即迭代器返回的nextNode。实现这样一个类。对于非空列表, Iterator.hasNext 方法将始终返回 true。”

我不确定我应该如何处理这个问题。

【问题讨论】:

  • 具体来说,你坚持什么?
  • 我了解如何制作单个链表,但我不明白如何在不引用头节点或尾节点的情况下使其成为循环链表。这是整本书中唯一提到循环链表的地方。
  • 如果你想到一个圆,那么圆的“起点”和“终点”是什么时候?

标签: java iterator circular-list


【解决方案1】:

该练习的措辞不会限制您的实施决策:它不是规定特定的解决方案,而是让您以您认为最方便的方式实施列表。

你确实需要有一个指向列表的指针,但由于列表是循环的,它不需要特别指向任何地方。由于它不指向头部或尾部,因此您可以将其称为next,并使其指向您认为方便的任何元素:

  • 插入后,next 可以指向您刚刚插入的元素
  • 删除后,next 可以指向被删除元素之后或之前的元素
  • 搜索后,next 可能保持不变

【讨论】:

    【解决方案2】:

    为了将你的单链表或双链表转换为循环,你链接头和尾..现在列表结构是循环的..所以没有必要有一个头/尾。 Bcoz 所有节点都是相互链接的,因此没有指针的下一个节点为空。

    循环列表有两种类型。 单个循环列表 - 仅具有 hasNext() 方法 双循环列表。- hasNext() 和 hasPrev()

    上述方法是循环链表中的遍历方式。

    【讨论】:

      猜你喜欢
      • 2021-07-30
      • 2021-12-05
      • 2015-06-05
      • 2021-09-16
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      相关资源
      最近更新 更多