数据结构-栈与队列

一、栈(Stack)

栈是一种遵循先进后出(LIFO,Last In First Out) 原则的数据结构,类比生活中堆叠的书籍,只能从顶部取放物品。其核心操作仅围绕栈顶进行:入栈(push)是将元素添加到栈顶,出栈(pop)是移除栈顶元素, peek 操作可查看栈顶元素而不删除,同时支持 isEmpty(判断是否为空)和 size(获取元素个数)等基础功能。栈的实现通常依赖数组或链表,数组实现效率更高(随机访问特性),链表实现则更灵活(无需预设容量)。在编程中,栈常用于递归调用、表达式求值(如后缀表达式转换)、括号匹配校验等场景,例如 Java 中的 Stack 类、C++ 的 std::stack 容器均是栈的典型实现。

二、队列(Queue)

队列遵循先进先出(FIFO,First In First Out) 原则,类似排队购票的场景,元素从队尾加入、队首移除。核心操作包括入队(enqueue,添加元素到队尾)、出队(dequeue,移除队首元素),front 操作可查看队首元素,同样支持 isEmpty 和 size 方法。队列的基础实现可通过数组或链表完成,其中链表实现能避免数组队列的"假溢出"问题(元素出队后队首空间无法复用)。实际应用中,队列常衍生出优先级队列(按优先级排序,而非入队顺序)、双端队列(Deque,两端均可入队出队)等变体,多用于任务调度、消息队列、广度优先搜索(BFS)等场景,Java 的 Queue 接口、C++ 的 std::queue 均为标准实现。

三、核心区别与共性

• 区别:核心在于元素存取顺序------栈是"后进先出",仅操作一端;队列是"先进先出",操作两端。

• 共性:均为线性数据结构,仅支持在特定位置进行插入和删除操作,不支持随机访问元素,底层均可通过数组或链表实现,且时间复杂度均为 O(1)(入队、出队、入栈、出栈操作)。

相关推荐
Book思议-1 天前
【数据结构考研真题】链表大题
c语言·数据结构·考研·算法·链表·408·计算机考研
Yu_Lijing1 天前
基于C++的《Head First设计模式》笔记——责任链模式
c++·笔记·设计模式·责任链模式
左左右右左右摇晃1 天前
Java笔记 —— 值传递与“引用传递”
java·开发语言·笔记
ShineWinsu1 天前
sqlite api
数据结构
ljt27249606611 天前
Flutter笔记--事件处理
笔记·flutter
飞鸟真人1 天前
使用netty4写一个UDP的echo服务(笔记)
笔记
sprite_雪碧1 天前
笔记:考研机试 —— 进制转换类问题
笔记·考研
j_xxx404_1 天前
力扣--分治(快速排序)算法题II:数组中的第K个最大元素(Top K问题),LCR159.库存管理III
数据结构·c++·算法·leetcode
ysa0510301 天前
运用map优化多次查询【Kadomatsu 子序列】
数据结构·c++·笔记·算法
苦瓜小生1 天前
【黑马点评学习笔记 | 实战篇 】| 10-用户签到+UV统计
笔记·后端·学习