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 に答える