【408数据结构与算法】—栈和队列(七)
- 🎬 博客主页:王同学要努力
- 📆 越努力 越幸运,愿我们都能在看不见的日子里闪闪发光!✨
一、栈和队列的特点
🎈栈—先进后出
🎈🎈栈和队列是限定插入和删除只能在表的端点进行的线性表;栈和队列是线性表的子集(是插入和删除位置受限的线性表)
🎈🎈🎈队列的特点:先进先出
二、栈的应用
由于栈的操作具有先进后出的特性,使得栈成为程序设计中的有用工具,另外,如果问题求解的过程中具有先进后出的天然特性的话,则求解的算法中也必然需要利用栈。例如:
- 数制转换
- 括号匹配的检验
- 行编辑程序
- 迷宫求解
- 表达式求值
- 八皇后问题
- 函数调用
- 递归调用的实现
三、队列的应用
由于队列的操作具有先进先出的特性,使得队列成为程序设计中掘金类似排队问题的有用工具。列如:
- 脱机打印输出:按申请的先后顺序依次输出
- 多用户系统中,多个用户排成队,分时地循环使用CPU和主存
- 按用户的优先级排成多个队,每个优先级一个队列
- 实时控制系统中,信号按接收的先后顺序依次处理
- 网络电文传输,按到达的时间先后顺序依次进行
四、栈的定义和特点
- 栈是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。又称为后进先出的线性表,简称LIFO结构。
- 栈是仅在表尾进行插入、删除操作的线性表。
- 表尾即an端称为栈顶Top,表头(a1)端称为栈底Base。
插入元素到栈顶即表尾称为入栈
从栈顶级表尾删除最后一个元素的操作称为出栈。
✳️思考:假设有3个元素a、b、c入栈的顺序是a、b、c则他们的出栈的顺序有几种可能?**
五、 栈的相关概念
- 定义:限定只能在表的一端进行插入和删除运算的线性表(只能在栈顶操作)
- 逻辑结构:与线性表相同,仍然为一对一的关系
- 存储结构:用顺序栈或链栈存储均可,但以顺序栈更常见
- 运算规则:只能在栈顶运算,且访问结点时依照后进先出LIOF的原则
- 实现方式:关键是编写入栈和出栈函数,具体实现依顺序栈或链栈的不同而不同。
栈与一般的线性表有什么区别
栈与一般线性表的区别:仅在于运算规则不同
六、队列的定义和特点
队列是一种先进先出的线性表,在表的一端插入(表尾),在另一端(表头)删除。
队列的相关概念
- 定义:只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)。
- 逻辑结构:与线性表相同,仍然为一对一的关系。
- 存储结构:顺序队或链队,以循环顺序队列更常见。
- 运算规则:只能在队首和队尾运算,且访问结点时依照先进先出的原则。
- 实现方式:关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同。