栈(Stack)和队列(Queue)是两种操作受限的线性表。
相同点
- 都是线性结构。
- 都可以通过顺序结构和链式结构实现。
- 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。
不同点
- 栈的插入和删除操作都是在一端进行的,而队列的操作却是在两端进行的。
- 队列先进先出,栈先进后出。
- 栈只允许在表尾一端进行插入和删除,而队列只允许在表尾一端进行插入,在表头一端进行删除
- 应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
- 顺序栈能够实现多栈空间共享,而顺序队列不能。