我的跳过列表的删除方法是无限循环!我遵循了这个网站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
感谢
答案 0 :(得分:1)
您错过了delete
中的一个步骤。
在递归通话之前,您需要为p
分配p.up
。
否则,你坐在最低分层p
上,继续调整邻居' right
和left
指针。