0

我的跳过列表的删除方法正在无限循环中!我遵循了这个网站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
谢谢

4

1 回答 1

1

你错过了一个步骤delete

在递归调用之前,您需要分配p的值p.up

否则,你坐在最低层p,只是不断调整邻居rightleft指针。

于 2015-09-29T04:33:11.643 回答