[JavaScript 刷题] 链表II,翻转链表,搜索,按值删除
Posted GoldenaArcher
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[JavaScript 刷题] 链表II,翻转链表,搜索,按值删除相关的知识,希望对你有一定的参考价值。
以单链表的功能为主。
Node
class Node {
constructor(value) {
this.value = value;
this.next = null;
}
}
构造函数
class LinkedList {
constructor() {
this.head = null;
}
}
isEmpty
判断链表是否为空,可以通过直接判断 head
是否为 null
进行实现。
时间复杂度为 O ( 1 ) O(1) O(1)
class LinkedList {
// 省略其他实现
isEmpty() {
return this.head === null;
}
}
插入实现
总共有三种:
- 在头部插入,
insertAtHead()
- 在尾部插入,
insertAtTail()
- 在指定索引插入,
insertAtTail()
头插
直接新建一个新的 Node
,将链表原本的 Head
指向新的 Node
,将链表的 Head
指向新的 Node
。
时间复杂度为 O(1)
图解如下:
-
原本的链表
2
为原本的Head
-
新建一个
Node
作为需要插入到链表头部的 Node。 -
将原本的 Node
2
链接到新建的 Node1
后 -
更新链表的 Head