栈
一个先进后出的数据结构
JS中没有栈,用Array实现栈的功能
进栈: push 出栈:pop
栈的应用场景:
- 十进制转二进制
- 判断字符串的括号是否有效
习题:
队列
一个先进后出的数据结构
同样JS中没有队列,用Array实现队列
进队: push 出队:shift
应用场景
- JS异步中的任务队列
- 计算最近请求
习题:
LeetCode:933. 最近的请求次数
链表
多个元素组成的列表
元素存储不连续,用next指针连在一起
数组VS链表
- 数组: 增删非首元素时往往需要移动元素
- 链表: 增删非首元素,不需要移动元素,只需要更改next的指向即可
JS中的链表
const a = {val : 'a'}
const b = {val : 'b'}
const c = {val : 'c'}
a.next = b;
b.next = c;
c.next = d;
链表的遍历
let p = a;
while (a) {
p = p.next;
}
链表插入
const e = {val : 'e'};
c.next = e;
e.next = d;
链表的删除
c.next = c.next.next
习题: