前端(数据结构与算法)学习笔记

前端(数据结构与算法)学习笔记

JavaScript 其它杂项

详细介绍

个人学习笔记

成长从笔记开始

链表

  1. 什么是链表?
    链表是通过"指针"(内存地址)将一组零散的内存串联起来的一种数据结构
  2. 链表与数组的区别
存储方式 插入&删除 随机访问性
数组 需要一串连续的内存空间 为了保持数据的连续性,需要做大量的数据搬移时间复杂度O(n) 可通过下标随机访问 时间复杂度O(1)
链表 通过"指针"将零散的内存串联起来 只改变相邻的节点时间复杂度为O(1) 需要从头开始一个一个查找 时间复杂度O(n)
  1. 链表的基础类型
  • 单链表

image

实现了单链表的插入,删除,查询,翻转等常见操作 JS代码

  • 双向链表

image

  • 循环链表

image

栈是一种遵从后进先出原则的有序集合

例如一摞叠在一起的盘子。我们平时放盘子的时候,都是从下往上一个一个放;取的时候,我们也是从上往下一个一个地依次取,不能从中间任意抽出。后进者先出,先进者后出,这就是典型的“栈”结构 image

栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。

栈的作用与实践:函数调用栈,编译器如何利用栈来实现表达式求值,借助栈来检查表达式中的括号是否匹配等

用数组实现的顺序栈
用链表实现的链式栈

队列

栈是一种遵从先进先出原则的有序集合

用数组实现的基本顺序队列

用数组实现的优先顺序队列

用数组实现的有限顺序队列

排序算法

快速排序

推荐源码