数据结构-栈与队列

一、栈(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)(入队、出队、入栈、出栈操作)。

相关推荐
ValhallaCoder7 小时前
hot100-二叉树I
数据结构·python·算法·二叉树
wdfk_prog7 小时前
[Linux]学习笔记系列 -- [drivers][input]input
linux·笔记·学习
ouliten7 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
孞㐑¥8 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风8 小时前
代码随想录第十五天
数据结构·算法·leetcode
NEXT069 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
mango_mangojuice9 小时前
Linux学习笔记(make/Makefile)1.23
java·linux·前端·笔记·学习
工程师老罗10 小时前
YOLOv1 核心知识点笔记
笔记·yolo
半壶清水11 小时前
[软考网规考点笔记]-软件开发、项目管理与知识产权核心知识与真题解析
网络·笔记·压力测试
tq108611 小时前
先探索,后设计
笔记