在 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 個節點進行反轉,或將一個鏈表中相鄰的節點反轉等。
  • 排序算法:鏈表可以用于實現一些排序算法,例如歸并排序、快速排序等。
鏈表數組