遍历一个链表数据结构是一个常见的面试问题。今天,我们将探讨如何在JavaScript中这样做。
链接列表的数据结构
链接列表的一个例子是一个有序的数字列表。比如说。
5 -> 3 -> 10
在JavaScript中,一个链接列表往往被表示为一个对象,它有一个值和一个指向列表中下一个项目的引用。我们前面提到的数字列表可以表示如下。
const linkedList = {
val: 5,
next: {
val: 3,
next: {
val: 10,
next: null,
},
},
};
如何遍历?让我们从结构中得到一些提示
所以我们的任务是遍历这个列表,并将其值放入一个数组:[5, 3, 10] 。
要做到这一点,我们要从数据结构中得到提示。我们可以看到,如果next 有一个值,就有更多的元素需要遍历。如果next 是null ,我们就完成了。
我们将从一个空数组开始,用一个while 循环来追踪我们的结构。
const arr = [];
let head = linkedList;
while (head !== null) {
arr.push(head.val);
head = head.next;
}
console.log(arr);
// [5, 3, 10]
这是如何工作的
那么,这是如何工作的呢?在while 循环的每个迭代中,head 变量指向链接列表中更深的一个对象。
const linkedList = {
// head @ Loop 1
val: 5,
next: {
// head @ Loop 2
val: 3,
next: {
// head @ Loop 3
val: 10,
next: null,
},
},
};
每次循环,我们把val 推到我们的arr ,然后继续前进。如果next 是null ,我们的while 循环就结束了!