网站大量收购独家精品文档,联系QQ:2885784924

数据结构第3章栈和队列.pptx

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

数据结构第3章栈和队列共40页,您现在浏览的是第1页!第3章栈和队列3.1栈的概念3.2栈的存储结构3.3顺序栈的操作算法3.4链栈的操作算法3.5栈的应用举例---表达式求值数据结构第3章栈和队列共40页,您现在浏览的是第2页!第3章栈和队列3.6队列的概念3.7队列的存储结构3.8循环队列的操作算法3.9链队的操作算法数据结构第3章栈和队列共40页,您现在浏览的是第3页!第三章栈和队列3.1栈的概念1.定义:栈(Stack)是限定仅在表的一端进行插入或删除操作的线性表。2.栈的示意图P443.栈的抽象数据类型定义P45数据结构第3章栈和队列共40页,您现在浏览的是第4页!1、顺序栈数据结构第3章栈和队列共40页,您现在浏览的是第5页!顺序栈的结构举例数据结构第3章栈和队列共40页,您现在浏览的是第6页!2、链栈数据结构第3章栈和队列共40页,您现在浏览的是第7页!3.3顺序栈的操作算法1建立一个空栈StatusInitStack(SqStackS){?//构造一个空栈S?S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));?if(!S.base)exit(overflow);//存储分配失效?S.top=S.base;?S.stacksize=STACK_INIT_SIZE;?returnOK;}//InitStack数据结构第3章栈和队列共40页,您现在浏览的是第8页!3.压栈pushStatusPush(SqStackS,SElemTypee){?//插入元素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;?returnOK;}//push数据结构第3章栈和队列共40页,您现在浏览的是第9页!5判断栈是否为空intEmpty(SqStackS)?{//若栈为空,则返回0,否则返回1?if(s.top==s.base)return(0);?elsereturn(1);?}6判断栈是否为满intFull(SqStackS)?{//若栈为满,则返回0,否则返回1?if(s.top-s.base)=s.stacksizereturn(0);?elsereturn(1);?}数据结构第3章栈和队列共40页,您现在浏览的是第10页!2.取栈顶元素StatusGettopLStack(LinkstackS,SElemTypee){?//若栈不为空,则用e返回S的栈顶元素,并返回OK,否则返回ERROR.?if(S==NULL)returnERROR;?e=S-data;?return(OK);}//GettopLStack数据结构第3章栈和队列共40页,您现在浏览的是第11页!4.出栈PopStatusPopLStack(LinkstackS,SElemTypee){?//若栈不为空,则删除S的栈顶元素,?用e返回其值,并返回OK,否则返回ERROR?if(s==NULL)returnERROR;?e=S-data;?S=S-link;?returnOK;}//PopLStack数据结构第3章栈和队列共40页,您现在浏览的是第12页!3.5栈的应用举例1---数制转换非负十进制整数转换为八进制数1348D=2504ONNDIV8NMOD8134816841682102125202数据结构第3章栈和队列共40页,您现在浏览的是第13页!表达式求值举例:计算3*(7-2)步骤OPTR栈OPND栈输入字符主要操作说明1#3*(7-2)#push(opnd,3)#32#3*(7-2)#push(optr,*)3*3#*3(7-2)#push(optr,()*(4#*(37-2)#push(opnd,7)7为操作数5#*(37-2)#push(optr,-)(-6#*(-372)#push(opnd,2)2为操作数7#*(-372)#operate(7,-,2)-)8#*(35)#pop(optr)(=)9#*35#operate(3,*,5)*#10#15#返回

文档评论(0)

. + 关注
官方认证
内容提供者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地河南
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档