栈和队列: 都属于特殊的线性结构
栈:特殊的线性表,只有一个出入口,只能在其一端进行数据的插入和删除
特性:后进先出 出入数据都在栈顶
可以看作只能进行尾插尾删的线性表
底层选择链式空间还是连续空间?
顺序表只要不在头部和中间进行增删,就不需要进行数据的搬移,那么效率就非常高,并且顺序结构的实现相对简单 ,只需要在尾部操作,时间为O(1),当然链式结构也是可以,把节点挂起来,但是一个个小结点的效率没有连续空间那么高
应用:进行单链表的逆向打印,不用库里提供的函数,尽量用静态栈,用宏确定大小,因为动态栈稍微复杂,还要考虑增容 没有特殊说明要存放多少个元素时要用动态的,静态栈实现起来快,并说明静态栈的缺点
队列:只允许在一端进行插入 插入端为队尾,在另一端进行删除 叫队头
-
顺序结构
-
只能头删,和尾删
-
出队列,保持队头不动 O(N)
-
出队列,队头向后移动 空间浪费 假溢出 优点:O(1)时间就能解决
-
假溢出:有空间没有用,但back走到了末尾没有能力再存数据了&#x
-
-
-