- 1、本文档共51页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 栈和队列 3.1 栈 3.1.1 抽象数据类型栈的定义 3.1.2 栈的表示和实现 3.2 栈的应用举例 3.2.1 数制转换 3.2.2 括号匹配的检验 3.2.4 行编辑程序 *3.2.5 迷宫求解 3.2.5 表达式求值 由此可见,当头尾指针相等时队列为空。在非空队列里,头指针始终指向队头元素,而尾指针始终指向队尾元素的下一位置。 0 1 2 3 0 1 2 3 Front rear c b a Front rear (a)队列初始为空 (b)A,B,C入队 0 1 2 3 0 1 2 3 c b front rear front rear (c) a出队 (d) b,c出队,队为空 和栈类似,队列中亦有上溢和下溢现象。此外,顺序队列中还存在“假上溢”现象。因为在入队和出队的操作中,头尾指针只增加不减小,致使被删除元素的空间永远无法重新利用。因此,尽管队列中实际的元素个数远远小于向量空间的规模,但也可能由于尾指针巳超出向量空间的上界而不能做入队操作。该现象称为假上溢。 为充分利用向量空间。克服上述假上溢现象的方法是将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量,存储在其中的队列称为循环队列(Circular Queue)。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界(QueueSize-1)时,其加1操作的结果是指向向量的下界0。 这种循环意义下的加1操作可以描述为: if(i+1==QueueSize) i=0; else i++; 利用模运算可简化为: i=(i+1)%QueueSize 显然,因为循环队列元素的空间可以被利用,除非向量空间真的被队列元素全部占用,否则不会上溢。因此,除一些简单的应用外,真正实用的顺序队列是循环队列。 如图所示:由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时头尾指针均相等。因此,我们无法通过front=rear来判断队列“空”还是“满”。 解决此问题的方法至少有三种: 其一是另设一个布尔变量以区别队列的空和满; 其二是少用一个元素的空间,约定入队前,测试尾指针在循环意义下加1后是否等于头指针,若相等则认为队满(注意:rear所指的单元始终为空); 其三是使用一个计数器记录队列中元素的总数(实际上是队列长度)。下面我们用第三种方法实现循环队列上的六种基本操作,为此先给出循环队列的类型定义。 #define QueueSize 100 typedef char DataType; typedef Struct{ int front; int rear; int count; datatype data[queuesize] }Cirqueue; * * 3.1.1 栈 3.1.1 栈的定义及基本运算 栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。 假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,3,…an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。 3.1.2 顺序栈 由于栈是运算受限的线性表,因此线性表的存储结构对栈也适应。 栈的顺序存储结构简称为顺序栈,它是运算受限的线性表。因此,可用数组来实现顺序栈。因为栈底位置是固定不变的,所以可以将栈底位置设置在数组的两端的任何一个端点;栈顶位置是随着进栈和退栈操作而变化的,故需用一个整型变量top 例、一叠书或一叠盘子。
您可能关注的文档
- 宽带基础知识讲述.doc
- 新型VHS录像机音频调频集成电路资料.pdf
- 组原讲节小结_Chapter4 存储器系统.doc
- 第十一章 哈工大数据结构大作业——哈夫曼树生成、编码、遍历.docx
- 任我行协同CRM操作应用说明书教案.pdf
- 脉冲响应不变法设计数字低通滤波器教材.doc
- 电商自建物流利弊分析.docx
- Samsung Galaxy A8怎样开启单手输入(A8000).pdf
- 第三讲2 运算方法.ppt
- 智能手机与微信时代,对Web与手机浏览器的再思考(上).pdf
- 考点解析-京改版数学9年级上册期末试题附完整答案详解【名师系列】.docx
- 考点解析-京改版数学9年级上册期末试题附完整答案详解【易错题】.docx
- 考点解析-京改版数学9年级上册期末试题带答案详解(名师推荐).docx
- 考点解析-京改版数学9年级上册期末试题附完整答案详解【有一套】.docx
- 考点解析-京改版数学9年级上册期末试题附完整答案详解(全优).docx
- 考点解析-京改版数学9年级上册期末试题【模拟题】附答案详解.docx
- 考点解析-京改版数学9年级上册期末试题及参考答案详解【夺分金卷】.docx
- 考点解析京改版数学8年级上册期中测试卷【典优】附答案详解.docx
- 考点解析-京改版数学9年级上册期末试题及完整答案详解【名校卷】.docx
- 考点解析-京改版数学9年级上册期末试题word版附答案详解.docx
文档评论(0)