03-第三章(栈、队)课件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
03-第三章(栈、队)课件

第三章 堆栈和队列;1;第三章 堆栈和队列;第三章 栈和队列;3.1 堆栈(stack);栈 底;例如:假设有A、B、C、D四个元素,以顺序栈为存储结构,入栈的时候可以出栈,如果入栈顺序为A、B、C、D,请问不可能得到下面那哪出栈序列?如果可能,栈的最小容量为多少? (1)A、B、C、D (2)D、B、C、A (3)C、B、A、D (4)A、C、B、D ;栈是一种特殊的线性表;3.1.2 堆栈的顺序存储实现 ;顺序栈基本运算的算法:;(2)判栈空操作 status empty_Ss( Ss_top)){ {/*栈Ss为空时,返回为TRUE;非空时,返回为FALSE*/ if(Ss_top==-1) return TRUE; else return FALSE; };(3)取栈顶元素操作 Get_Ss(Ss, Ss_top, x) {/*若栈s不为空,则返回栈顶元素*/ if(Ss_top==-1) {printf(“空栈”);return ERROR; } else x=Ss[Ss_top] return OK; };Ss_top;;Ss_top;;;顺序栈4要素 栈空:Ss_top==-1 栈满:Ss_top==MAXSIZE-1 进栈操作:Ss_top++; Ss[Ss_top]=x; 出栈操作:x=Ss[Ss_top];Ss_top--; ;1、假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top = = 0表示栈空,并已知栈未满,当元素x进栈时所执行的操作为______。 a[- -top] = x; B. a[top- -] = x; C. a[++top] = x; D. a[top++] = x; 2、假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,top = = 0表示栈空,并已知栈未空,当出栈并返回栈顶元素时所执行的操作为______。 return a[- -top]; B. return a[top--]; C. return a[++top]; D. return a[top++];;;a;由两个栈共享一个向量空间的好处是______。 A减少存取时间,降低下溢发生的机率 B节省存储空间,降低上溢发生的机率 C减少存取时间,降低上溢发生的机率 D节省存储空间,降低下溢发生的机率;3.1.3堆栈的链式存储的实现 一、栈的链式存储结构;链栈的表示和算法实现;入栈过程;;;出栈过程 ;本节小结;3.3 栈的应用实例;例3.1 设计算法完成如下功能:读入一个整数n,随后读入n个整数,然后按照与输入次序相反的次序输出各元素的值。例如,如果输入n的值为5,其后面的各整数为1、2、3、4、5,则应输出5、4、3、2、1。;例3.2 设计算法将单链表L就地逆置,即将链表中的各元素结点的后继指针倒置为指向其前驱结点,使a1结点变成最后一个结点,an结点变成第一个结点。;例3.3 数制转换 十进制N和其它进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理: N=(n div d)*d+n mod d ( 其中:div为整除运算,mod为求余运算) 例如 (1348)10=(2504)8,其运算过程如下:; void conversion( ) { initstack(s); scanf (“%d”,n); while(n){ push(s,n%2); n=n/2; } while(! Stackempty(s)){ pop(s,e); printf(“%d”,e); } } ; void conversion( ) { initstack(s); scanf (“%”,n); while(n) { push(s,n%8); n=n/8; } while(! Stackempty(s)) { pop(s,e); printf(“%d”,e); } } ;3.3.1 算术表达式求值:堆栈应用;求中缀表达式的过程;;3.3 栈-栈

文档评论(0)

baa89089 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档