0

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

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

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

4

2 回答 2

2

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

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

  • 插入后,next可以指向你刚刚插入的元素
  • 删除后,next可以指向被删除元素之后或之前的元素
  • 搜索后,next可能保持不变
于 2014-03-02T03:41:52.920 回答
0

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

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

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

于 2014-03-02T03:57:29.003 回答