数据结构03栈和队列

第三章栈和队列

STL
栈:stack http://blog.csdn.net/weixin_37289816/article/details/54773495
队列:
queue  http://blog.csdn.net/weixin_37289816/article/details/54773581
priority_queue  http://blog.csdn.net/weixin_37289816/article/details/54773592
dequeue  http://blog.csdn.net/weixin_37289816/article/details/54729516

从数据结构角度看,栈和队列也是线性表。

栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表。

3.1 栈 stack

限定仅在表尾进行插入和删除操作的线性表。

表尾端 --> 栈顶 top

表头端 --> 栈底 bottom

后进先出 LIFO  last in first out

插入元素 --> 入栈

删除元素 --> 出栈

 

顺序栈

非空栈中的栈顶指针始终在栈顶元素的下一个位置。

3.2 栈的应用举例

3.2.1 数制转换

3.2.2 括号匹配检验

可用“期待的紧迫程度”这个概念来描述。

在算法中设置一个栈;

1、每读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消解,或者是不合法的情况;

2、若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的紧迫性都降了一级;

算法开始和结束时,栈都应该是空的。

 

3.2.3 行编辑程序

遇#退栈

遇@清栈

遇换行输出栈

 

3.2.4 迷宫求解

栈中所存信息为,坐标+步数+搜寻方向

墙-1

可走0

当前判断的位置与栈顶元素有关

 

3.2.5 表达式求值

表达式求值算法:

使用两个工作栈:1、运算符栈,2、操作数栈。

基本思想:

1、首先置操作数栈为空栈,表达式起始符“#”为运算符栈的栈底元素;

2、依次读入表达式的每个字符,若是操作数则进操作数栈,若是运算符,则和运算符栈的栈顶运算符比较优先权后作相应操作,直至整个表达式求值完毕。栈顶高则计算,栈顶低则压栈。

符号 + - * / ( )

栈顶

+  >  + - )

-  >  + - )

*  >  * / + - )

/  >  * / + - )

(  < all  = )

 

3.3 栈与递归的实现

栈:函数调用

调用函数和被调用函数之间的链接及信息交换需通过栈来进行

 

递归函数

函数中有直接或间接调用自身函数的语句

条件:1、降阶;2、有出口。

编译软件开辟的栈空间是有限的,当递归调用时,嵌套的层次往往很多,可能发生栈溢出的现象。

 

3.4 队列

队列 queue:先进先出(First In First Out,FIFO)的线性表。

在表的一端进行插入,而在另一端删除元素。

队尾 rear:允许插入的一端

队头 front:允许删除的一端

 

典型例子:操作系统中的作业排队

双端队列:限定插入和删除操作在表的两端进行的线性表。

两端插入,一端删除;

两端删除,一端插入;

从插入端删除(栈底相连的栈)。

 

顺序队列(循环队列):

初始化建空队列时,令front=rear=0

插入队尾,尾指针增1

删除队头,头指针增1

在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾的下一个位置

 

循环队列:

1、另设一个标志位以区别队列是空还是满;

2、少用一个元素空间,约定以“队列头指针在队列尾指针的下一位置”作为队列呈满的标志。

头尾指针对存储空间MAX_QSIZE求余,形成循环队列。

 

如果用户的应用程序中设有循环队列,则必须为它设定一个最大队列长度;

若用户无法预估所用队列的最大长度,则采用链队列。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387215.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派pwm驱动好盈电调及伺服电机

本文讲述如何通过树莓派的硬件PWM控制好盈电调来驱动RC车子的前进后退&#xff0c;以及如何驱动伺服电机来控制车子转向。 1. 好盈电调简介 车子上的电调型号为&#xff1a;WP-10BLS-A-RTR&#xff0c;在好盈官网并没有搜到对应手册&#xff0c;但找到一份通用RC竞速车的电调使…

数据结构04串

第四章 串 STL&#xff1a;string http://blog.csdn.net/weixin_37289816/article/details/54716009计算机上非数值处理的对象基本上是字符串数据。 在不同类型的应用中&#xff0c;字符串具有不同的特点&#xff0c;要有效的实现字符串的处理&#xff0c;必须选用合适的存储…

CAS单点登录原理解析

CAS单点登录原理解析 SSO英文全称Single Sign On&#xff0c;单点登录。SSO是在多个应用系统中&#xff0c;用户只需要登录一次就可以访问所有相互信任的应用系统。CAS是一种基于http协议的B/S应用系统单点登录实现方案&#xff0c;认识CAS之前首先要熟悉http协议、Session与Co…

数据结构05数组和广义表

第五章 数组 和 广义表 数组和广义表可以看成是线性表在下述含义上的扩展&#xff1a;表中的数据元素本身也是一个数据结构。 5.1 数组的定义 n维数组中每个元素都受着n个关系的约束&#xff0c;每个元素都有一个直接后继元素。 可以把二维数组看成是这样一个定长线性表&…

数据结构06树和二叉树

第六章 树和二叉树 6.1 树的定义和基本术语 树 Tree 是n个结点的有限集。 任意一棵非空树中&#xff1a; &#xff08;1&#xff09;有且仅有一个特定的称为根&#xff08;root&#xff09;的结点&#xff1b; &#xff08;2&#xff09;当n>1时&#xff0c;其余结点可…

CountDownLatch,CyclicBarrier和Semaphore

在java 1.5中&#xff0c;提供了一些非常有用的辅助类来帮助我们进行并发编程&#xff0c;比如CountDownLatch&#xff0c;CyclicBarrier和Semaphore&#xff0c;今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲&#xff1a;一.CountDownLatch用法二.CyclicBarrie…

数据结构07排序

第十章内部排序 10.1 概述 排序就是把一组数据按关键字的大小有规律地排列。经过排序的数据更易于查找。 排序前KiKj&#xff0c;且Ki在前: 排序方法是稳定的&#xff0c;若排序后Ki在前&#xff1b; 排序方法是不稳定的&#xff0c;如排序后Kj在前。 分类&#xff1a; 内…

数据结构08查找

第九章 查找 另一种在实际应用中大量使用的数据结构--查找表。 所谓查找&#xff0c;即为在一个含有众多的数据元素的查找表中找出某个“特定的”数据元素。 查找表 search table 是由同一类型的数据元素构成的集合。集合中的数据元素之间存在着完全松散的关系&#xff0c;故…

下载Centos7 64位镜像

下载Centos7 64位镜像 1.打开Centos官网 打开Centos官方网站地址&#xff1a;https://www.centos.org/&#xff0c;点击Get CentOS Now 2.点击Minimal ISO镜像 Minimal ISO镜像&#xff0c;与DVD ISO镜像的差别有很多&#xff0c;这里只说两点 1.Minimal ISO类似于Windows的纯净…

Scala01入门

第1章 可伸展的语言 Scala应用范围广&#xff0c;从编写脚本&#xff0c;到建立大型系统。 运行在标准Java平台上&#xff0c;与Java库无缝交互。 更能发挥力量的地方&#xff1a;建立大型系统或可重用控件的架构。 将面向对象和函数式编程加入到静态类型语言。 在Scala中&a…

Java网络01基本网络概念

协议 Protocol&#xff1a;明确规则 &#xff08;1&#xff09;地址格式&#xff1b; &#xff08;2&#xff09;数据如何分包&#xff1b; ... TCP/IP四层模型&#xff1a; 应用层 HTTP SMTP POP IMAP 传输层 TCP UDP 网际层 IP 主机网络层 host to host layer 数模、…

Java网络02基本Web概念

URI Uniform Resource Identifier 同一资源标识符 以特定语法标识一个资源的字符串 绝对URI&#xff1a;URI模式模式特有部分 scheme:scheme-specific-part scheme分为&#xff1a; data file本地文件系统 ftp http telnet urn 统一资源名 scheme-specific-part为&am…

解决自建ca认证后浏览器警告

前一篇讲解了基本的建立证书的过程&#xff0c;但是建立后总是会在浏览器那里警告&#xff1a; 此链接不是私密链接 --谷歌浏览器 此证书颁发机构不可信 此证书不是这个网站的 --ie浏览器 总之证书是生成成功了&#xff0c;但是其中的内容填写错误了&a…

Java网络03流

网络程序所做的很大一部分工作只是输入和输出&#xff1a;从一个系统向另一个系统移动数据。 输出流 Java的基本输出流类是java.io.OutputStream: public abstract class OutputStream 这个类提供了写入数据所需的基本方法&#xff0c;包括&#xff1a; public abstract vo…

基于微信小程序开发的仿微信demo

(本文参考自github/liujians,地址:https://github.com/liujians/weApp) 作者声明&#xff1a; 基于微信小程序开发的仿微信demo 整合了ionic的样式库和weui的样式库 使用请查看使用必读! 更新日志请点击这里 目前功能 查看消息 网络请求获取数据&#xff08;download示例server…

解决idea 中web项目无法正常显示的问题

转载于:https://www.cnblogs.com/nulijiushimeili/p/10575364.html

分享一个前后端分离的web项目(vue+spring boot)

Github地址&#xff1a;https://github.com/smallsnail-wh 前端项目名为wh-web后端项目名为wh-server项目展示地址为我的github pages&#xff08;https://smallsnail-wh.github.io&#xff09;用户名&#xff1a;admin&#xff0c;密码admin&#xff08;第一次启动会比较慢&am…

部署php项目到linux

服务器&#xff1a;39.106.26.67rootBayou2009 数据库&#xff1a;rootbayou2009 项目文件夹路径&#xff1a;/home/www/项目文件夹名称&#xff1a;education.bayou-tech.cn 绑定域名&#xff1a;education.bayou-tech.cn 绑定域名&#xff1a; 用ftp把配置文件下班到windows修…

ZooKeeper安装配置

配置 1、在conf目录下创建一个配置文件zoo.cfg tickTime2000 dataDir.../zookeeper/data dataLogDir.../zookeeper/dataLog clientPort2181 initLimit5 syncLimit2 server.1server1:2888:3888 server.2server2:2888:3888 server.3server3:2888:3888 •tickTime&#…

ionic2开发的仿外卖点餐系统(Ionic2+Angular2

github上的项目源码 Run this Project&#xff08;运行该项目&#xff09; first&#xff08;首先&#xff09;: make sure your computer install ionic 确保你的电脑安装了ionic2,不懂自行百度 second&#xff08;其次&#xff09;:$ ionic start wechat_restaurant tutorial…