Javascriptを使用して二重リンクリストから要素を削除する
リンクリストでは、要素の削除は非常に簡単です。削除したいノードを取り除く必要があります。つまり、その参照を失います。考慮する必要がある3つのケースがあります-
- headから要素を削除する:この場合、head =head.nextを割り当てるだけで、次の要素から前のリンクを削除できます。このようにして、最初の要素の参照を失います。そして、頭が2番目の要素を指し始めます。
- テールから要素を削除する:この場合、最後から2番目のノードのnode.nextをnullに割り当てるだけで、リストから最後の要素を削除できます。また、現在のノードを指すようにテールを更新します。
- 中間から要素を削除する:これはより注意が必要です。この場合、削除するノードの前にノードを作成し、削除するノードの後にあるノードを直接指すようにする必要があります。したがって、prevNode.next=node.nextおよびnode.next.prev=prevNodeがこれを実行します。
さて、これのイラストを見てみましょう-
それでは、これをどのように実装するかを見てみましょう-
例
remove(data, position = 0) {
if (this.length === 0) {
console.log("List is already empty");
return;
}
this.length--;
let currNode = this.head;
if (position <= 0) {
this.head = this.head.next;
this.head.prev = null;
}
else if (position >= this.length - 1) {
this.tail = this.tail.prev;
this.tail.next = null;
}
else {
let iter = 0;
while (iter < position) {
currNode = currNode.next;
iter++;
}
currNode.next = currNode.next.next;
currNode.next.prev = currNode;
}
return currNode;
} 例
-
を使用してこれをテストできますlet list = new LinkedList(); list.insert(10); list.insert(20); list.insert(30); list.remove(1); list.display(); list.insert(15, 2); list.remove(); list.display();
出力
これにより、出力が得られます-
20 <-> 30 <-> 30 <-> 15 <->
-
Javascriptでのリンクリスト表現
上図のように、考慮すべき重要なポイントは次のとおりです。 LinkedListには、firstというリンク要素が含まれています。 各リンクには、データフィールドとnextと呼ばれるリンクフィールドがあります。 各リンクは、次のリンクを使用して次のリンクにリンクされます。 最後のリンクには、リストの終わりを示すためにnullとしてリンクが含まれています。
-
Javascriptを使用して二重リンクリストから要素を削除する
リンクリストでは、要素の削除は非常に簡単です。削除したいノードを取り除く必要があります。つまり、その参照を失います。考慮する必要がある3つのケースがあります- headから要素を削除する:この場合、head =head.nextを割り当てるだけで、次の要素から前のリンクを削除できます。このようにして、最初の要素の参照を失います。そして、頭が2番目の要素を指し始めます。 テールから要素を削除する:この場合、最後から2番目のノードのnode.nextをnullに割り当てるだけで、リストから最後の要素を削除できます。また、現在のノードを指すようにテールを更新します。 中間から要素を削除する:これ