数据结构讲义(严蔚敏版)第三章 栈和队列.pptVIP

数据结构讲义(严蔚敏版)第三章 栈和队列.ppt

  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文档。上传文档
查看更多
数据结构讲义(严蔚敏版)第三章 栈和队列

第三章 栈和队列 简介: 线性结构,操作受限的线性表-限定性数据结构 广泛用于程序设计、系统软件设计以及递归问题处理 3.1 栈的定义和示意图 栈的抽象数据类型的定义 ADT Stack { 数据对象:D={ai| ai ? ElemSet, i=1,2,…,n, n?0} 数据关系:R1={ ai-1, ai | ai-1,ai ?D,i=2,…,n} 基本操作:InitStack(S), DestroyStack(S) ClearStack(S), Push(S, e), Pop(S, e) StackLength(S), GetTop(S, e) StackTraverse(S, visit()), StackEmpty(S) } ADT Stack 顺序栈的表示和实现 栈的基本操作(1) Status InitStack(SqStack S) //构造一个空栈S { S.base=(SElemType*)malloc((STACK_INIT_SIZE)*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top=S.base;//空栈 S.stacksize=STACK_INIT_SIZE;//栈的初始容量分配 return OK; }//InitStack Status DestroyStack(SqStack S) { if(S.base) free(S.base); return OK; } 栈的基本操作(2) Status ClearStack(SqStack S) { while(S.top!=S.base) Pop(S,e); return OK; } Status StackEmpty(SqStack S) { if(S.top==S.base) return TRUE; else return FALSE; } 栈的基本操作(3) SElemType StackLength(SqStack S) { return S.top-S.base; } Status GetTop(SqStack S, SElemType e) //用e返回栈顶元素 { if(S.top==S.base) return ERROR;//栈空 e=*(S.top-1);//取栈顶元素 return OK; }//GetTop 栈的基本操作(4) Status Push(SqStack S,SElemType e) {//入栈,插入元素e为新的栈顶元素 if(S.top-S.base=S.stacksize) { S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; }//Push 栈的基本操作(5) Status Pop(SqStack S,SElemType e) {//出栈,删除栈顶元素用e返回 if(S.top==S.base)//栈空 return ERROR; e=*--S.top;//取栈顶元素赋给e return OK; } Status StackTraverse(SqStackS,Status*(visit)(ElemType)) { p=S.base; while(S.topp) visit(*p++); return OK; } 3.2 栈的应用—数制转换 十进制数和其它进制数的转换是计算机实现计算的基本问题 算法策略:N=(N div d)*d+N mod d 例: (1348)10=( )8,其运算过程如下: N N div 8 N mod 8 1348 168 4 168 21 0 21 2 5

文档评论(0)

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

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

1亿VIP精品文档

相关文档