如何在JavaScript中遍历一个关联列表

67 阅读1分钟

遍历一个链表数据结构是一个常见的面试问题。今天,我们将探讨如何在JavaScript中这样做。

链接列表的数据结构

链接列表的一个例子是一个有序的数字列表。比如说。

5 -> 3 -> 10

在JavaScript中,一个链接列表往往被表示为一个对象,它有一个值和一个指向列表中下一个项目的引用。我们前面提到的数字列表可以表示如下。

const linkedList = {
  val: 5,
  next: {
    val: 3,
    next: {
      val: 10,
      next: null,
    },
  },
};

如何遍历?让我们从结构中得到一些提示

所以我们的任务是遍历这个列表,并将其值放入一个数组:[5, 3, 10]

要做到这一点,我们要从数据结构中得到提示。我们可以看到,如果next 有一个值,就有更多的元素需要遍历。如果nextnull ,我们就完成了。

我们将从一个空数组开始,用一个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 ,然后继续前进。如果nextnull ,我们的while 循环就结束了!