在 JavaScript 中,可以通過循環遍歷數組并創建一個新的鏈表節點,然后將其插入到鏈表中來將一個數組轉換為鏈表。如下代碼所示:
class Node {
constructor(value, next = null) {
this.value = value;
this.next = next;
}
}
function arrayToLinkedList(arr) {
if (!arr || !arr.length) {
return null;
}
let head = new Node(arr[0]);
let current = head;
for (let i = 1; i < arr.length; i++) {
let newNode = new Node(arr[i]);
current.next = newNode;
current = newNode;
}
return head;
}
在上面的代碼中,arrayToLinkedList 函數接受一個數組作為參數,返回一個鏈表的頭節點。使用循環遍歷數組,為每個元素創建一個新的鏈表節點。然后,它將新的節點插入到鏈表中,并將 current 指針指向新的節點,以便在下一個迭代中使用。最后,該函數返回鏈表的頭節點。
使用方式如下:
const arrayList = [1, 2, 3, 4, 5, "a"];
const head = arrayToLinkedList(arrayList);
// 遍歷鏈表并打印每個節點的值
let current = head;
while (current) {
console.log(current.value);
current = current.next;
}
鏈表用途
JavaScript 中的鏈表主要用于實現一些數據結構和算法。以下是一些常見的應用場景:
- 實現棧和隊列:鏈表可以用來實現棧和隊列,通過在鏈表頭部插入和刪除元素,實現棧的
FILO(先進后出)和隊列的FIFO(先進先出)特性。 - 緩存淘汰算法:鏈表可以用于實現 LRU(最近最少使用)算法,其中鏈表的頭部存儲最近使用的數據,尾部存儲最久未使用的數據,當緩存空間滿時,將尾部的數據刪除。
- 多級反轉問題:鏈表可以用于解決一些多級反轉問題,例如將一個鏈表中每
K個節點進行反轉,或將一個鏈表中相鄰的節點反轉等。 - 排序算法:鏈表可以用于實現一些排序算法,例如歸并排序、快速排序等。