【问题标题】: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 被更改。我没有遵循该图的逻辑。谁能帮帮我。

谢谢!

【问题讨论】:

    标签: java c++ c algorithm josephus


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多