数据结构(一):概念及数据结构 “栈”,“队列”,“链表”
1,概念:时间复杂度: O(1) < O(log2n)< O(n) < O(n^2) . O(1) + O(n) = O(n)
空间复杂度,占用存储空间大小的度量: O(1) < O(n) < O(n^2)
利用数据结构本身提供的方法,解决业务问题。不同数据结构适用场景不同
2,栈
概念: 后进先出 。
数据结构:数组
方法: push,pop
举例: 1,有效的括号闭合。
左括号入栈,右括号出栈,最后栈空了就是合法的。
2,函数调用堆栈。
最后调用的函数,最先执行完
js解释器 使用栈来控制函数的调用顺序
leecode:20、
3,队列
概念: 先进先出。 应用于先进先出的场景
数据结构:数组模拟
方法: 数组的 push,shift
举例: event loop中的任务队列 callback queue。
4,链表
概念:增删非首尾元素,不需要移动元素,只需要更改next的指向即可
vs 数组:增删非首尾元素时往往需要移动元素
leecode:237,206,2,83,141
其他:原型链 即链表结构 (__Proto__代替next),__proto__指向每一个原型对象 或 null。
// 链表数据结构: a const a = { val: 'a' } const b = { val: 'b' } const c = { val: 'c' } const d = { val: 'd' } a.next = b b.next = c c.next = d // 遍历链表 let p = a while (p) { console.log(p.val) p = p.next } // 插入 c.next = e e.next = d // 删除 c b.next = d
浙公网安备 33010602011771号