数据结构-栈与队列

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

相关推荐
影寂ldy8 分钟前
C# TCP转串口Modbus网关终极完整版笔记(队列防抖+一问一答+帧解析+双客户端轮询)
笔记·tcp/ip·c#
CQU_JIAKE32 分钟前
9.28【A】
数据结构
code斗9 小时前
Java数据结构:堆详解
java·开发语言·数据结构
Elaine33611 小时前
数据结构与算法-程序
数据结构·python·算法·计算机基础·编程基础
L@ncor12 小时前
第五章 基于低代码平台的智能体搭建 · 学习笔记(Coze / Dify / FastGPT / n8n)
笔记·学习·低代码·agent·prompt工程
知潮网12 小时前
被嫌弃的五仁月饼,一吨千元在养猪场翻了身
笔记
2601_9606312312 小时前
中药前处理及提取的工艺环节与技术要点
笔记
2601_9653842612 小时前
口腔黏膜清洁中的几何约束与流体动力学边界层问题分析
经验分享·笔记
Logic10113 小时前
C语言/数据结构位运算题解:异或XOR找出游戏速通中的“独特初始能量值“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
一米阳光866113 小时前
软考高级【信息系统项目管理师】高项重要考点(9)组织 助你顺利上岸!
笔记·职场发展·软考·高项·信息系统项目管理师·高级职称