【问题标题】:Java implementing the delete methid in a skip listJava 在跳过列表中实现删除方法
【发布时间】:2015-09-29 04:17:00
【问题描述】:

我的跳过列表的删除方法正在无限循环中!我遵循了这个网站上的伪代码http://www.mathcs.emory.edu/~cheung/Courses/323/Syllabus/Map/skip-list-impl.html。除了删除之外,其他方法似乎工作正常。这是我的代码:

public void delete(String k) {
    SkipListEntry p = findEntry(k);

    if (p.key != k) {
        return; // Not found, don't remove
    }

    while (p != null) {
        //need to delete the entry from each list using the "up" or "down" links
        p.left.right = p.right;
        p.right.left = p.left;  
    }
}

这是我的完整代码http://pastebin.com/StJRzixN
谢谢

【问题讨论】:

  • 您永远不会在循环中更新p。你认为p != null 会如何改变价值?

标签: java skip-lists


【解决方案1】:

您在delete 中缺少一步。

在递归调用之前,需要给p赋值p.up

否则,您将坐在最低层的p 上,然后继续调整邻居的rightleft 指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-15
    • 2010-11-19
    • 1970-01-01
    • 2022-12-18
    • 2015-06-29
    • 2011-02-25
    • 2013-10-17
    • 2013-05-07
    相关资源
    最近更新 更多