关于使用数组表示约瑟夫斯谜题
Posted
技术标签:
【中文标题】关于使用数组表示约瑟夫斯谜题【英文标题】:Regarding representation of Josephus puzzle using arrays 【发布时间】:2010-11-28 09:34:18 【问题描述】:Algorithms by Robert Sedwick,提到链表可以用数组来表示,在下面的链接中
http://flylib.com/books/en/3.55.1.34/1/
图 3.8,如果从我的理解中删除了 5,则在删除 val 5 时,下一个 4 应该更改为索引 6,因为我们将在第 4 项的数字被删除,下一个 val 3 被更改。我没有遵循该图的逻辑。谁能帮帮我。
谢谢!
【问题讨论】:
【参考方案1】:索引是从零开始的,而不是值本身(字母会是更好的值)。
删除5
值示例:删除前,值为4
的节点的下一个索引为4,指向值为5
;删除后,下一个索引更改为 5,指向值 6
(下一个从 4 更改为 5)。
或者,使用前缀v
来表示值:
之前
index ... 3 4 5 ...
----------------------
value v4 v5 v6
next 4 5 6
之后
index ... 3 4 5 ...
----------------------
value v4 v5 v6
next 5 5 6
如您所见,节点 v4
后跟 v6
(索引 5)实际上从链中删除了 v5
。
【讨论】:
以上是关于关于使用数组表示约瑟夫斯谜题的主要内容,如果未能解决你的问题,请参考以下文章