前端-算法1:栈、队列、链表

一个先进后出的数据结构
JS中没有栈,用Array实现栈的功能
进栈: push 出栈:pop
栈的应用场景:

  1. 十进制转二进制
  2. 判断字符串的括号是否有效

习题:

  • LeetCode:20.有效的括号

队列

一个先进后出的数据结构
同样JS中没有队列,用Array实现队列
进队: push 出队:shift
应用场景

  1. JS异步中的任务队列
  2. 计算最近请求
    习题:
    LeetCode:933. 最近的请求次数

链表

多个元素组成的列表
元素存储不连续,用next指针连在一起


E56FD664-5C81-42BF-A280-336ED351BE8A.png

数组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

习题:

  • LeetCode:237.删除链表中的节点
  • LeetCode:206.反转链表

你可能感兴趣的:(前端-算法1:栈、队列、链表)