关于使用数组表示约瑟夫斯拼图

时间:2010-11-28 09:34:19

标签: java c++ c algorithm josephus

Robert Sedwick的算法,有人提到可以使用数组表示链表,在以下链接中

http://flylib.com/books/en/3.55.1.34/1/

图3.8,这里如果从我的理解中删除5,接下来4将被删除为val 5,因为我们去了第4项的数字被删除了下一个val 3被追逐。我没有遵循图中的逻辑。我可以帮助我。

谢谢!

1 个答案:

答案 0 :(得分: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