JavaScript 数据结构 – 链表
1. 链表定义
1.1 定义
链表是一种使用任意单元存储线性表元素的数据结构,是一种链式存储的线性表,该种数据结构的特点:
- 方便插入和删除
- 不支持随机存取
- 存储单元(元素)在内存中不一定连续
- 链表中元素存储元素信息外,还含有指向下一个元素的指针域信息
1.2 示意图
head
:链表头Node
:元素(结点)info
:元素信息next
:指向下一元素的指针域
1.3 链表支持方法
add(node)
:增加一个结点remove()
:删除一个结点size()
:返回链表长度isEmpty()
:检测链表是否为空get(index)
:获取index
下的元素
2. JavaScript 链表的实现
2.1 字面量声明
let list = {
head:null,
add: function(data) {
let node = {
data: data,
next: null
}
if (this.head === null) {
this.head = node
} else {
let pre = this.head;
let next = this.head.next;
while (next !== null) {
pre = next;
next = next.next;
}
pre.next = node;
}
},
remove: function() {
if (this.head === null || this.head.next === null) {
this.head = null;
return;
}
let pre = this.head;
let next = this.head.next;
while (next.next !== null) {
pre = next;
next = pre.next;
}
console.log(pre.data);
pre.next = null;
},
isEmpty