线性数据结构
队列
- 什么是队列?
先进先出,先来的先购买 可以基于数组实现:有界队列,队列的大小有限,满了就会拒绝请求 可以基于链表来实现:无界队列,可能导出过多的请求排队等待
栈
- 什么是栈?
一种叠盘子的结构,不能从中间塞入,只能先从上面取盘子,操作受限的先进后出的结构。
使用场景
数组或者链表都可以完全替代栈,但是暴露太多操作接口,相对不可控,容易出错, 如果涉及一端插入与删除,先进后出的情况就可以使用栈这种数据结构
- 数组、链表来实现栈
数组实现的是顺序栈,链表实现的是链式栈
链表
- 什么是链表?
不需要一块连续的内存空间,通过指针将零散的内存块串联起来的数据结构,有效避免申请大内存 导致创建失败的问题。 节点存储数据以及下一个节点的地址,适合插入与删除操作
数组
- 什么是数组?
一组连续的内存空间,存储相同数据类型的数据 支持随机访问,根据下标访问元素的时间复杂度为O(1) 为了保证内存数据的连续性,数组的插入、删除操作会比较低效