没有头或尾的Java循环链表?

没有头或尾的Java循环链表?,java,iterator,circular-list,Java,Iterator,Circular List,我的书只在一页上提到了循环链表,并说你可以通过使单链表或双链表的头和尾相互链接来创建它们。但是编程练习说: 循环链表不需要头或尾。相反,您只需要引用当前节点,即迭代器返回的下一个节点。实现这样一个类。对于非空列表,迭代器.hasNext方法将始终返回true 我真的不知道该如何处理这个问题。这个练习的措辞不会限制您的实施决策:它让您以最方便的方式实施列表,而不是指定特定的解决方案 您确实需要一个指向列表的指针,但由于列表是循环的,因此不需要特别指向任何地方。由于它不指向头部或尾部,因此您可以将其

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

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


我真的不知道该如何处理这个问题。

这个练习的措辞不会限制您的实施决策:它让您以最方便的方式实施列表,而不是指定特定的解决方案

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

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

要将单链或双链列表转换为循环列表,请链接头部和尾部。。现在列表结构是循环的。。因此,没有必要有头/尾。Bcoz所有节点都是互连的,因此没有指针将下一个节点设为null

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


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

具体来说,你坚持什么?我知道如何制作单个链表,但我不知道如何在不引用头部或尾部节点的情况下将其制作为循环链表。这是整本书中唯一提到的循环链表。如果你想到一个循环,循环的“起点”和“终点”是什么?