使用 Javascript 從雙向連結串列中刪除元素
在連結串列中刪除一個元素非常容易。我們只需要擺脫我們要刪除的節點,即失去它的引用。我們需要考慮 3 種情況 −
- 從頭部刪除元素:在這種情況下,我們可以簡單地賦值 head = head.next,並刪除 next 元素的前一個連結。這樣,我們將丟失第一個元素的引用。我們的頭部將指向第二個元素。
- 從尾部刪除元素:在這種情況下,我們可以簡單地將倒數第二個節點的 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 <->
廣告