【408数据结构与算法】—栈和队列(七)

简介: 栈和队列是限定插入和删除只能在表的端点进行的线性表;栈和队列是线性表的子集(是插入和删除位置受限的线性表)

一、栈和队列的特点

🎈栈—先进后出

2345_image_file_copy_161.jpg

🎈🎈栈和队列是限定插入和删除只能在表的端点进行的线性表;栈和队列是线性表的子集(是插入和删除位置受限的线性表)

2345_image_file_copy_162.jpg

🎈🎈🎈队列的特点:先进先出

2345_image_file_copy_163.jpg

二、栈的应用

由于栈的操作具有先进后出的特性,使得栈成为程序设计中的有用工具,另外,如果问题求解的过程中具有先进后出的天然特性的话,则求解的算法中也必然需要利用栈。例如:

  • 数制转换
  • 括号匹配的检验
  • 行编辑程序
  • 迷宫求解
  • 表达式求值
  • 八皇后问题
  • 函数调用
  • 递归调用的实现

三、队列的应用

由于队列的操作具有先进先出的特性,使得队列成为程序设计中掘金类似排队问题的有用工具。列如:

  • 脱机打印输出:按申请的先后顺序依次输出
  • 多用户系统中,多个用户排成队,分时地循环使用CPU和主存
  • 按用户的优先级排成多个队,每个优先级一个队列
  • 实时控制系统中,信号按接收的先后顺序依次处理
  • 网络电文传输,按到达的时间先后顺序依次进行

四、栈的定义和特点

  • 栈是一个特殊的线性表,是限定仅在一端(通常是表尾)进行插入和删除操作的线性表。又称为后进先出的线性表,简称LIFO结构。
  • 栈是仅在表尾进行插入、删除操作的线性表。
  • 表尾即an端称为栈顶Top,表头(a1)端称为栈底Base。

2345_image_file_copy_164.jpg

插入元素到栈顶即表尾称为入栈

从栈顶级表尾删除最后一个元素的操作称为出栈。

2345_image_file_copy_165.jpg

2345_image_file_copy_166.jpg

2345_image_file_copy_167.jpg

✳️思考:假设有3个元素a、b、c入栈的顺序是a、b、c则他们的出栈的顺序有几种可能?**

2345_image_file_copy_168.jpg

2345_image_file_copy_169.jpg

五、 栈的相关概念

  • 定义:限定只能在表的一端进行插入和删除运算的线性表(只能在栈顶操作)
  • 逻辑结构:与线性表相同,仍然为一对一的关系
  • 存储结构:用顺序栈或链栈存储均可,但以顺序栈更常见
  • 运算规则:只能在栈顶运算,且访问结点时依照后进先出LIOF的原则
  • 实现方式:关键是编写入栈和出栈函数,具体实现依顺序栈或链栈的不同而不同。

栈与一般的线性表有什么区别

栈与一般线性表的区别:仅在于运算规则不同

2345_image_file_copy_170.jpg

六、队列的定义和特点

队列是一种先进先出的线性表,在表的一端插入(表尾),在另一端(表头)删除。

2345_image_file_copy_171.jpg

2345_image_file_copy_172.jpg

队列的相关概念

  1. 定义:只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表(头删尾插)。
  2. 逻辑结构:与线性表相同,仍然为一对一的关系。
  3. 存储结构:顺序队或链队,以循环顺序队列更常见。
  4. 运算规则:只能在队首和队尾运算,且访问结点时依照先进先出的原则。
  5. 实现方式:关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同。

相关文章
|
前端开发 Java
SpringBoot下载xlsx模板,导出excel数据
SpringBoot下载xlsx模板,导出excel数据
1026 0
|
2月前
|
人工智能 编解码 搜索推荐
AI智能换背景,助力电商图片营销升级
电商产品图换背景是提升销量与品牌形象的关键。传统抠图耗时费力,AI技术则实现一键智能换背景,高效精准。本文详解燕雀光年AI全能设计、Canva、Remove.bg等十大AI工具,涵盖功能特点与选型建议,助力商家快速打造高质量、高吸引力的商品图,提升转化率与品牌价值。(238字)
284 0
|
11月前
|
机器学习/深度学习 存储 人工智能
《揭秘人工智能数据安全风险评估方法:守护数字未来的关键》
在人工智能快速发展的背景下,数据安全至关重要。常见的风险评估方法包括定性(因素分析、逻辑分析、历史比较)、定量(机器学习算法、基于图的分析、风险因子分析)及综合评估(层次分析、模糊综合评价)。此外,漏洞扫描、代码审查、数据加密评估和安全审计等也是重要手段。多种方法结合使用,确保全面准确评估风险,保障人工智能健康发展。
568 19
|
SQL Python
SqlAlchemy 2.0 中文文档(三十二)(2)
SqlAlchemy 2.0 中文文档(三十二)
113 0
|
SQL 监控 druid
【创作赢红包】JDBC的“那些事“之数据库连接池
【创作赢红包】JDBC的“那些事“之数据库连接池
|
人工智能 运维 Cloud Native
给运维工程师的Cheatsheets! 《Shell脚本速查手册》免费下!
Shell 作为 Linux 中的第一语言,几乎每一个使用 Linux 的人都用到或用过 Shell,但绝大多数人都并不能掌握 Shell 编程的基本能力和技巧。
给运维工程师的Cheatsheets! 《Shell脚本速查手册》免费下!
|
JavaScript
Ext JS Tips
callParent() 优化 调用父类方法,如 Ext.define('App.view.MyPanel', { extend: ‘Ext.panel.Panel’, onRender: function (parentNode, index) { this.callParent(arguments); } }); 其中 this.callParent 等价于 Ext.panel.Panel.prototype.onRender.apply(this, arguments);,而且后者效率更高。
694 0
|
8天前
|
云安全 监控 安全