数据结构(一):概念及数据结构 “栈”,“队列”,“链表”

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

 

posted @ 2020-11-17 18:57  毛栗的demo  阅读(142)  评论(0)    收藏  举报