欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript 鏈表

李中冰1年前7瀏覽0評論

JavaScript中的鏈表是一種列表數據結構,它由節點組成,每個節點包含了一個指向下一個節點的引用。與數組相比,鏈表的優勢在于它可以高效地插入和刪除元素,而無需為了保持元素連續而移動其他元素。

以下是一個簡單的鏈表實現:

<code class="language-javascript">
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
class LinkedList {
constructor() {
this.head = null;
this.tail = null;
this.length = 0;
}
append(value) {
const node = new Node(value);
if (!this.head) {
this.head = node;
this.tail = node;
} else {
this.tail.next = node;
this.tail = node;
}
this.length++;
}
insert(position, value) {
if (position < 0 || position > this.length) {
return false;
}
const node = new Node(value);
if (position === 0) {
node.next = this.head;
this.head = node;
} else if (position === this.length) {
this.tail.next = node;
this.tail = node;
} else {
let index = 0;
let current = this.head;
let previous = null;
while (index < position) {
previous = current;
current = current.next;
index++;
}
node.next = current;
previous.next = node;
}
this.length++;
return true;
}
remove(position) {
if (position < 0 || position >= this.length) {
return null;
}
let current = this.head;
if (position === 0) {
this.head = current.next;
if (this.length === 1) {
this.tail = null;
}
} else {
let index = 0;
let previous = null;
while (index < position) {
previous = current;
current = current.next;
index++;
}
previous.next = current.next;
if (position === this.length - 1) {
this.tail = previous;
}
}
this.length--;
return current.value;
}
}
</code>

上述代碼實現了一個基本的鏈表類,它包含了三個方法append、insert和remove,分別用于向鏈表尾部追加元素、插入元素到特定位置和移除特定位置元素。

以下是一個簡單的使用示例:

<code class="language-javascript">
const list = new LinkedList();
list.append(1);
list.append(2);
list.append(3);
console.log(list.length);   // 3
console.log(list.head.value);  // 1
console.log(list.tail.value);  // 3
list.insert(1, 5);
console.log(list.length);   // 4
console.log(list.head.value);  // 1
console.log(list.tail.value);  // 3
console.log(list.head.next.value); // 5
list.remove(1);
console.log(list.length);   // 3
console.log(list.head.value);  // 1
console.log(list.tail.value);  // 3
console.log(list.head.next.value); // 2
</code>

在實際開發中,鏈表可用于實現各種復雜數據結構,如棧、隊列、哈希表等,具有廣泛的應用。如果你想深入了解鏈表,可以查閱相關資料,也可以在開發過程中使用它來解決實際問題。