这是我参与新手入门的第1篇文章
链表的定义
链表是有一组节点组成的集合,每个节点包括一个节点本身的值和一个指向下一个节点的引用。下图就展示了一个链表的结构。
实现链表
知道了什么是链表,接下来我们就开始实现一个链表。下面我们定义链表的类。
class LinkedList {
constructor() {
this.head = null;
this.count = 0;
}
}
这里我们声明的 count 属性用来表示链表中节点的个数,head 属性用来存储链表中的第一个节点。
要表示链表中的第一个节点或其他节点,我们还需要一个辅助类,可以叫作 Node。Node 类是我们想要添加到链表中的项,它包含一个value属性,表示当前节点的值;以及一个next属性,指向下一个节点的引用。代码如下所示。
export class Node {
constructor(value) {
this.value = value
this.next = null
}
}
下面我们要为 LinkedList 类添加一些方法。
向链表的尾部添加一个节点
向链表的尾部添加节点分为两种情况:
- 链表为空,添加的是第一个节点
- 链表不为空,向链表追加一个节点 下面我们实现这个方法。
push(value) {
const node = new Node(value);
if (this.head == null) {
this.head = node;
} else {
let current = this.head;
while (current.next != null) {
current = current.next;
}
current.next = node;
}
this.count++;
}
首先我们将 value 作为值传入,创建 Node。 然后我们判断head有没有值,如果没有我们将新建的 node 直接赋值给他;如果有值,我们首先声明一个变量 current 来保存 head 的值。接着我们通过一个 while 循环类判断 current 的 next 有没有值,有则说明它不是最后一个节点,我们将 current 的 next 赋值给 current,然后重复这一操作,直到找到 next 为空的 current,将我们新建的 node 赋值给他。最后我们还要让节点的个数增加一个。
未完待续……