まず、ダブルリンクリストのノードを表すクラスを作成します。以下のようなコードで実現できます。
class Node {
constructor(data) {
this.data = data;
this.prev = null;
this.next = null;
}
}
次に、ダブルリンクリスト自体を表すクラスを作成します。以下のようなコードで実現できます。
class DoublyLinkedList {
constructor() {
this.head = null;
this.tail = null;
}
// リストの先頭に要素を追加するメソッド
prepend(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
this.tail = newNode;
} else {
newNode.next = this.head;
this.head.prev = newNode;
this.head = newNode;
}
}
// リストの末尾に要素を追加するメソッド
append(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
this.tail = newNode;
} else {
newNode.prev = this.tail;
this.tail.next = newNode;
this.tail = newNode;
}
}
// リストから指定された要素を削除するメソッド
remove(data) {
let currentNode = this.head;
while (currentNode) {
if (currentNode.data === data) {
if (currentNode === this.head && currentNode === this.tail) {
this.head = null;
this.tail = null;
} else if (currentNode === this.head) {
this.head = currentNode.next;
this.head.prev = null;
} else if (currentNode === this.tail) {
this.tail = currentNode.prev;
this.tail.next = null;
} else {
currentNode.prev.next = currentNode.next;
currentNode.next.prev = currentNode.prev;
}
break;
}
currentNode = currentNode.next;
}
}
// リスト内の要素を表示するメソッド
display() {
let currentNode = this.head;
while (currentNode) {
console.log(currentNode.data);
currentNode = currentNode.next;
}
}
}
以上が、JavaScriptでのダブルリンクリストの実装方法です。以下に、実際の使用例を示します。
const list = new DoublyLinkedList();
list.append(1);
list.append(2);
list.prepend(3);
list.display(); // 出力: 3 1 2
list.remove(1);
list.display(); // 出力: 3 2
このように、ダブルリンクリストを使用することで、リスト内の要素を追加、削除、検索することが簡単になります。必要に応じて、さまざまなメソッドを追加して機能を拡張することもできます。
以上が、JavaScriptでのダブルリンクリストの実装方法と使用例です。このデータ構造を活用することで、さまざまなアプリケーションやプログラムで効率的なデータ管理を行うことができます。