Javascriptのリンクリストクラス
例
class LinkedList { constructor() { this.head = null; this.length = 0; } insert(data, position = this.length) { let node = new this.Node(data); if (this.head === null) { this.head = node; this.length++; return this.head; } let iter = 1; let currNode = this.head; while (currNode.next != null && iter < position) { currNode = currNode.next; iter++; } node.next = currNode.next; currNode.next = node; this.length++; return node; } 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; } else if (position >= this.length - 1) { while (currNode.next.next != null) { currNode = currNode.next; } currNode.next = null; } else { let iter = 0; while (iter < position) { currNode = currNode.next; iter++; } currNode.next = currNode.next.next; } return currNode; } display() { let currNode = this.head; while (currNode != null) { console.log(currNode.data + " -> "); currNode = currNode.next; } } } LinkedList.prototype.Node = class { constructor(data) { this.data = data; this.next = null; } };
-
Javascriptの循環としての二重リンクリスト
二重リンクリストでは、最後のノードの次のポインタが最初のノードを指し、最初のノードの前のポインタが最後のノードを指し、両方向に循環します。 循環リンクリストでの挿入と削除は、他のリンクリストと同じです。リンクリストの両端で操作を実行している間は、最後のリンクを追跡する必要があります。 循環リンクリストアルゴリズムをガイドとして使用して、循環リンクリストを検索して実装してみることができます。
-
Javascriptの循環としての単一リンクリスト
単一リンクリストでは、最後のノードの次のポインタが最初のノードを指します。