0

我有直觉,可以通过适当的列表(带有结束标记)结合循环遍历整个列表来模拟循环列表。我的感觉是循环列表更干净,因为控制逻辑(循环)内置在结构中。另一方面,将控制逻辑与结构分开似乎是一种关注点分离,在某些情况下可能会受到青睐。我不太确定的是在什么情况下每个都是有用的。我也不太确定模拟是否总是可行的。如果不是,你能举个反例吗?

4

2 回答 2

3

是的,总是有可能的。

优点:

  • 你有一个循环列表。这大概是专业人士,否则您将不会这样做。

缺点:

  • 出于某种原因,您浪费了时间来实现一个普通列表的包装,而不是一开始就编写一个循环列表。

FWIW,我很久以前就得出结论,所有列表都应该是循环的。这允许您使用单个指针指向列表中的(名义上的)最后一个元素,但您可以在 O(1) 时间内轻松地在列表的头部和尾部插入。此外,使列表循环减少了列表操作代码中特殊情况的数量(在下一个指针处总是有一个有效节点)。

于 2014-02-26T15:55:14.613 回答
1

是的,你可以模拟它。但是你应该需要两个指针来控制你的列表。一个访问当前元素的指针和一个保存第一个元素的指针。您必须制定一些逻辑来检测“当前元素指针”何时超出列表边界并将其移动到第一个元素。

于 2014-02-26T15:55:20.447 回答