在 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
个节点进行反转,或将一个链表中相邻的节点反转等。 - 排序算法:链表可以用于实现一些排序算法,例如归并排序、快速排序等。