数据结构(三) - 栈和队列
-
栈和队列是限定插入和删除只能在表的“端点”进行的线性表
栈和队列是线性表的子集(是插入和删除位置受限的线性表)
栈的定义和特点
-
栈(stack) 是一个特殊的线性表,是限定仅在一段(通常是表尾)进行插入和删除操作的线性表
-
又称为后进先出(Last In First Out) 的线性表,简称LIFO结构。
栈是仅在表尾进行插入、删除操作的线性表
表尾(即an端)称为栈顶 Top;表头(即a1端)称为栈底 Base
插入元素到栈顶(即表尾)的操作,称为入栈。
从栈顶删除最后一个元素的操作,称为出栈。
示意图:
总结:
栈与线性表的区别:
顺序栈的实现和表示
使用数组作为顺序栈存储方式的特点:简单、方便、但易产生溢出(数组大小固定)
- 上溢(overflow): 栈已经满,又要压入元素
- 下溢(underflow): 栈已经空,还要弹出元素
tips:
上溢是一种错误,使问题的处理无法进行;而下溢一般认为是一种结束条件,即问题处理结束。
链栈的顺序和表示
队列的定义和特点
队列(queue)是一种先进先出(First In First Out ----- FIFO)的线性表。在表一段插入(表尾),在另一端(表头)删除
总结:
栈和递归
以下三种情况常常用到递归方法:
- 递归定义的数学函数
- 具有递归特性的数据结构
- 可递归求解的问题
递归问题 --- 用分治法求解
分治法: 对于一个较为复杂的问题,能够分解成几个相对简单的且解法相同或类似的子问题来求解
分治法求解递归问题算法的一般形式:
递归的优缺点:
本文来自博客园,作者:chuangzhou,转载请注明原文链接:https://www.cnblogs.com/czzz/p/16099315.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!