- リンクリストのノードを表すクラスを作成する: リンクリストのノードは、データと次のノードへの参照を持つ必要があります。以下は、JavaScriptでのリンクリストのノードを表すクラスの例です。
class Node {
constructor(data) {
this.data = data;
this.next = null;
}
}
- リンクリストの実装と基本的な操作: リンクリストは、ノードの集合であり、最初のノードを指すヘッドと呼ばれる参照が必要です。以下は、リンクリストの実装と基本的な操作の例です。
class LinkedList {
constructor() {
this.head = null;
}
// リンクリストの末尾に新しいノードを追加する
append(data) {
const newNode = new Node(data);
if (!this.head) {
this.head = newNode;
} else {
let current = this.head;
while (current.next) {
current = current.next;
}
current.next = newNode;
}
}
// リンクリストの特定の位置に新しいノードを挿入する
insertAt(position, data) {
const newNode = new Node(data);
if (position === 0) {
newNode.next = this.head;
this.head = newNode;
} else {
let current = this.head;
let previous = null;
let index = 0;
while (index < position) {
previous = current;
current = current.next;
index++;
}
newNode.next = current;
previous.next = newNode;
}
}
// リンクリストから特定のデータを削除する
remove(data) {
let current = this.head;
let previous = null;
while (current !== null) {
if (current.data === data) {
if (previous === null) {
this.head = current.next;
} else {
previous.next = current.next;
}
return;
}
previous = current;
current = current.next;
}
}
// リンクリストを表示する
display() {
let current = this.head;
while (current !== null) {
console.log(current.data);
current = current.next;
}
}
}
- リンクリストの使用例: リンクリストを使用するための例を以下に示します。
const linkedList = new LinkedList();
linkedList.append(10);
linkedList.append(20);
linkedList.append(30);
linkedList.insertAt(1, 15);
linkedList.remove(20);
linkedList.display();
上記の例では、リンクリストを作成し、要素を追加、挿入、削除しています。最後に、リンクリストの内容を表示しています。
このようにして、JavaScriptでリンクリストを実装し、データを効果的に管理することができます。リンクリストは、データの挿入と削除が頻繁に行われる場合や、可変サイズのデータセットを扱う場合に特に有用です。