这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战 | 创作学习持续成长,夺宝闯关赢大奖 - 掘金 (juejin.cn)
链表基础
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 链表是一种抽象概念,代表一种唯一指向思想 链表适合用于存储一些经常增加、删除的数据
链表应用场景
对线性表的长度或者规模难以估计;频繁做插入删除操作;构建动态性比较强的线性表(我还没接触过)
代码实现
链表的实现在leetcode中有注释,本文加入两个方法,数组转列表节点及列表节点转数组
class ListNode {
constructor(val, next) {
this.val = (val === undefined ? 0 : val)
this.next = next === undefined ? null : next
}
// 数组转listNode
generateList(array) {
const fakeHead = new ListNode(0)
let current = fakeHead
for(let i = 0; i < array; i++) {
current.next = {val: array[i], next: null}
current = current.next
}
return fakeHead
}
// listNode转数组
generateArray(list) {
let res = []
while(list){
res.push(list.value)
list = list.next
}
return res
}
}