Java在跳过列表中实现delete methid

时间:2015-09-29 04:17:01

标签: java skip-lists

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

1 个答案:

答案 0 :(得分:1)

您错过了delete中的一个步骤。

在递归通话之前,您需要为p分配p.up

否则,你坐在最低分层p上,继续调整邻居' rightleft指针。