数据结构--栈

一、核心定义

栈(Stack)是运算受限的线性数据结构,核心遵循「后进先出(LIFO,Last In First Out)」原则------仅允许在栈顶(开口端)进行元素的插入和删除,栈底(封闭端)无法直接操作,可类比为叠放的盘子或枪械弹匣。

二、关键特性

• 操作受限:所有增删查操作仅针对栈顶,不能随机访问中间或底部元素;

• 动态特性:除静态实现外,栈的大小可随元素操作动态变化;

• 高效性:核心操作时间复杂度均为 O(1),无需遍历。

三、核心操作

• Push(入栈/压栈):将新元素添加到栈顶,栈顶指针上移(需先判断栈是否已满,避免溢出);

• Pop(出栈/弹栈):移除并返回栈顶元素,栈顶指针下移(需先判断栈是否为空,避免错误);

• Peek/Top(查看栈顶):返回栈顶元素但不删除,栈结构不变;

• isEmpty(判空):判断栈中是否无元素,返回布尔值;

• Size(获取大小):返回栈中当前元素的数量。

四、实现方式

• 顺序栈(数组实现):基于数组存储元素,优势是紧凑高效,缺点是固定容量易溢出(可通过动态扩容优化);

• 链栈(链表实现):基于链表节点存储元素,以链表头部为栈顶,优势是动态扩容无溢出风险,缺点是节点指针会增加少量空间开销。

五、典型应用场景

• 程序运行:函数调用栈(存储函数运行状态,调用时压栈、结束时弹栈);

• 日常工具:浏览器后退功能、文本编辑器撤销操作(按时间顺序存储操作记录);

• 算法问题:括号匹配、四则运算表达式求值、非递归实现递归逻辑。

相关推荐
AI视觉网奇12 分钟前
ue5 字典 字典动画 笔记
笔记·学习·ue5
小程同学>o<38 分钟前
嵌入式之ARM体系与架构面试题(一)硬件基础篇
arm开发·笔记·学习·面试·架构
じ☆冷颜〃40 分钟前
交换代数的解析延拓及在CS的应用
c语言·数据结构·笔记·线性代数·密码学
航Hang*1 小时前
Photoshop 图形与图像处理技术——第9章:实践训练2——变换花朵颜色与绘制正方体
图像处理·笔记·学习·ui·photoshop·期末·复习
航Hang*1 小时前
Photoshop 图形与图像处理技术——第9章:实践训练5——文字和路径
图像处理·笔记·学习·ui·photoshop·期末
txzrxz1 小时前
数据结构有关的题目(栈,队列,set和map)
数据结构·c++·笔记·算法··队列
CoderCodingNo1 小时前
【GESP】C++五级练习题(前缀和) luogu-P1114 “非常男女”计划
数据结构·c++·算法
我是大咖1 小时前
关于柔性数组的理解
数据结构·算法·柔性数组
岑梓铭1 小时前
YOLO深度学习(计算机视觉)—毕设笔记(yolo训练效率加快)
人工智能·笔记·深度学习·神经网络·yolo·计算机视觉
Hello_Embed1 小时前
串口面向对象封装实例
笔记·stm32·单片机·学习·操作系统