リストについて:指定された要素は、指定された位置の後に挿入され、削除または要素を削除します

説明:アイデアは、意味を表現するために、擬似コードで書かれています。

まず、ヴァルに等しいノードのリストを削除

CURは、2つのノードとPREV(ノードCURの前駆体)を必要とする
、リスト全体を横断するように、所与のValを比較し
、それらが等しい場合:prev.next = cur.next;
等しくない場合:CUR = cur.next。

第二に、指定されたPOS挿入した後、削除ノードが
挿入されている:pos.next =ノードと
node.next = pos.next;
削除:pos.next = pos.next.next

コードは以下の通りであります:

`` `クラスノード{
int型のval;
ノードの横= NULL;

Node(int val) {
    this.val = val;
}

public String toString() {
    return String.format("Node(%d)", val);
}

}

{ソリューションクラス
パブリックremoveElementsノード(ノードヘッド、INTヴァル){
ノード結果= NULL;
ノード最終= NULL; //は、最後の現在の結果のノードを記録します

    Node cur = head;
    while (cur != null) {
        if (cur.val == val) {
            cur = cur.next;
            continue;
        }

        Node next = cur.next;

        cur.next = null;
        if (result == null) {
            result = cur;
        } else {
            last.next = cur;
        }

        last = cur;

        cur = next;
    }

    return result;
}

}

パブリッククラスMyLinkedList {
パブリック静的無効メイン(文字列[] args){
ノードヘッド=新しいノード(1)。
head.next =新しいノード(2)。
head.next.next =新しいノード(3); //のPOS
head.next.next.next =新しいノード(4)。

    Node pos = head.next.next;
    pushAfter(pos, 100);//在pos之后入100

    // 1, 2, 3, 100, 4
}

private static void pushAfter(Node pos, int val) {
    Node node = new Node(val);

    node.next = pos.next;
    pos.next = node;
}

private static void popAfter(Node pos) {
    pos.next = pos.next.next;
}

}

おすすめ

転載: blog.51cto.com/14232658/2443906