- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第三章数据结构第三章
数据结构 主要讨论的问题:栈与队列的逻辑结构;栈与队列的存储结构;栈与队列的应用. * 第三章 栈和队列 §3.1栈 .回忆:线性表的插入与删除操作. .栈的定义:是限定仅在表尾进行插入或删除的线性表. .栈顶:表尾. .栈底:表头. .栈的示意图表示 .栈的特点:先进后出. .栈的基本操作:初始化,判空,判满,取栈顶元素,插入(进栈)与删除(出栈)等. 例1.若元素a、b、c、d、e、f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈工作,则不可能得到的出栈序列是() A.dcebfa B.cbdaef C.bcaefd D.afedcb 例2.一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( ). A. 2 3 4 1 5 B. 5 4 1 3 2 C. 2 3 1 4 5 D. 1 5 4 3 2 .栈的存储结构 .栈的顺序存储结构与链式存储结构 .栈的顺序存储结构 ----顺序栈 . 顺序栈的初始化 . 顺序栈的进栈与判满 . 顺序栈的出栈与判空 .栈的应用 例3.设有两个栈S1,S2都采用顺序方式存储,并且共享一个存储区[0..maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向,迎面增长的存储方式。试设计S1,S2有关入栈和出栈的操作算法。 . 分析:两栈共享向量空间,将两栈栈底设在向量两端,初始时,s1栈顶指针为-1,s2栈顶为maxsize。两栈顶指针相邻时为栈满。 #define maxsize 20 //两栈共享顺序存储空间所能达到的最多元素数 #define ElemType int //假设元素类型为整型 typedef struct { ElemType stack[maxsize]; //栈空间 int top[2]; //top为两个栈顶指针 }stk; stk s; int push(int i, int x) { //入栈操作. i为栈号,i=0表示左边的栈s1,i=1表示右边的栈 s2,x是入栈元素.入栈成功返回1,否则返回0. if(i0||i1){ cout“栈号输入不对”;exit(0);} if (s.top[1]-s.top[0]==1) { cout“栈已满\n”; return (0);} switch(i) {case 0: s.stack[++s.top[0]]=x; return(1); break; case 1: s.stack[--s.top[1]]=x; return(1); } }//算法结束 . 进栈之前要判断栈是否满;若不满,则 栈顶指针要指示出即将进栈元素在栈中的位置. ElemType pop(int i) { //退栈算法.i代表栈号,i=0时为s1栈,i=1时为s2栈.退栈成功返回退栈元素,否则返回-1. if (i0 || i1){cout“栈号输入错误\n”;exit(0);} switch(i) { case 0: if(s.top[0]==-1) {cout“栈空\n”;return(-1);} else return(s.stack[s.top[0]--]); case 1: if(s.top[1]==maxsize) {cout“栈空\n”;return(-1);} else return(s.stack[s.top[1]++]); } }//算法结束 . 出栈之前要判断栈是否空;若不空,则 栈顶指针指向次栈顶即可. 例4.设表达式以字符形式已存入数组E[n]中,‘#’为表达式的结束符,试写出判断表达式中括号(‘(’和‘)’)是否配对的C语言描述算法:EXYX(E); (注:算法中可调用栈操作的基本算法) . 分析:判断表达式中括号是否匹配,可通过栈实现.简单说,就是当读到左括号时,左括号进栈;当读到右括号时,左括号退栈。即退栈时,若栈顶元素是左括号,则新读到的右括号与栈顶左括号就可消去。如此下去,输入表达式结束时,栈为空则正确,否则括号不匹配. int Check(char E[ ], int n) { char s[30]; //s是一维数组,容量足够大,用作存放括号的栈. int top=0; //top用作栈顶指针. s[top]= ‘#’; //‘#’先入
您可能关注的文档
- 数学课堂中听说读写能力的培养数学课堂中听说读写能力的培养.doc
- 数学专业相关的英语演讲数学专业相关的英语演讲.ppt
- 数学:1.1.1《集合的定义及表示(第1课时)》课件(新人教A版必修1)数学:1.1.1《集合的定义及表示(第1课时)》课件(新人教A版必修1).ppt
- 数学物理方程--- 6 特征线法数学物理方程--- 6 特征线法.ppt
- 数学课件:人教A版必修1 第1章1.1.1第一课时 集合数学课件:人教A版必修1 第1章1.1.1第一课时 集合.ppt
- 数学:1.1.3《集合的基本运算(第2课时)》课件(新人教A版必修1)数学:1.1.3《集合的基本运算(第2课时)》课件(新人教A版必修1).ppt
- 数学:1.1.1《集合的含义与表示(第1课时)》课件(苏教版必修1)数学:1.1.1《集合的含义与表示(第1课时)》课件(苏教版必修1).ppt
- 数学:1.1.3《集合的基本运算(第1课时)》课件(新人教A版必修1)数学:1.1.3《集合的基本运算(第1课时)》课件(新人教A版必修1).ppt
- 数学:1.1.3 集合的基本运算 第1课时课件(新人教A版必修1)数学:1.1.3 集合的基本运算 第1课时课件(新人教A版必修1).ppt
- 数学:1.2.1有理数课件(人教新课标七年级上)数学:1.2.1有理数课件(人教新课标七年级上).ppt
- 福莱特玻璃集团股份有限公司海外监管公告 - 福莱特玻璃集团股份有限公司2024年度环境、社会及管治报告.pdf
- 广哈通信:2024年度环境、社会及治理(ESG)报告.pdf
- 招商证券股份有限公司招商证券2024年度环境、社会及管治报告.pdf
- 宏信建设发展有限公司2024 可持续发展暨环境、社会及管治(ESG)报告.pdf
- 品创控股有限公司环境、社会及管治报告 2024.pdf
- 中信建投证券股份有限公司2024可持续发展暨环境、社会及管治报告.pdf
- 洛阳栾川钼业集团股份有限公司环境、社会及管治报告.pdf
- 361度国际有限公司二零二四年环境、社会及管治报告.pdf
- 中国神华能源股份有限公司2024年度环境、社会及管治报告.pdf
- 广西能源:2024年环境、社会及治理(ESG)报告.pdf
最近下载
- 党课讲稿:坚持以人民为中心的发展思想.doc VIP
- 幼儿园 中班数学《排排队—高矮长短排序》.pptx VIP
- (高清版)B-T 7025.1-2023 电梯主参数及轿厢、井道、机房的型式与尺寸 第1部分Ⅰ、Ⅱ、Ⅲ、Ⅵ类电梯.pdf VIP
- 房屋租赁合同--2.doc VIP
- 2023星闪无线短距通信技术(SparkLink1.0)产业化推进白皮书.docx
- 大学生就业教育主题班会.pptx
- 2023届合肥高三二模作文“言与行”导写及范文.docx
- 《网络信息辨真假》(共12张PPT).pptx VIP
- 党纪学习教育六大纪律研讨发言提纲.docx VIP
- 湘少版小学英语修订教材解读.pptx VIP
文档评论(0)