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

第三章 计算机软件技术基础.ppt

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

第三章 栈与队列;栈 队列 栈的应用:表达式求值 栈的应用:递归 队列的应用;只允许在一端插入和删除的线性表 允许插入和删除 的一端称为栈顶 (top),另一端称 为栈底(bottom) 特点 后进先出 (LIFO);栈的数组存储表示 — 顺序栈; ;top;建立一个容量为m的空栈: #include “stdlib.h” Void init-stack(s,m,top) ET *s; int m, *top; {s=malloc(m*sizeof(ET)); *top=0; return; };PROCEDURE PUSH(S,m,top,x) //若栈不满, 则将元素x插入该栈栈顶, 否则溢出处理 if (top=m) then {Stack overflow;RUTURN} //栈满 top=top+1; //栈顶指针先加1, 再进栈 S(top)=x; RETURN PROCEDURE POP(S,m,top,y) //退出栈顶元素并返回栈顶元素的值 if (top=0) then {Stack underflow;RETURN} y=S(top); top=top-1;//栈顶指针退1 return true; //退栈成功 }; ;PROCEDURE TOP(S,m,top,y)//若栈不空则返回该栈栈顶元素的地址 if (top=0) then {“Stack empty”;RETURN} y=S(top); return ; ;栈的链接存储表示 — 链式栈;链式栈类操作的实现; top = new StackNodeE (x, top); //创建新结点 assert (top != NULL); //创建失败退出 }; template class E bool LinkedStackE::Pop(E x) { //删除栈顶结点, 返回被删栈顶元素的值。 if ( IsEmpty() == true ) return false; //栈空返回 StackNodeE *p = top; //暂存栈顶元素 top = top-link; //退栈顶指针 x = p-data; delete p; //释放结点 return true; };;template class E bool LinkedStackE::getTop(E x) const { if ( IsEmpty() == true ) return false; //栈空返回 x = top-data; //返回栈顶元素的值 return true; }; template class E void LinkedStackE::output(ostream os, StackNodeE *ptr, int i) { //递归输出栈中所有元素(沿链逆向输出) if (ptr != NULL) {; if ( ptr-link != NULL ) output(os, ptr-link, i++ ); os i “ : ” p-data endl; //逐个输出栈中元素的值 } }; ;队列 ( Queue );队列的进队和出队 ;队列的进队和出队原则;队列存放数组被当作首尾相接的表处理。 队头、队尾指针加1时从maxSize-1直接进到0,可用语言的取模(余数)运算实现。 队头指针进1: front = (front+1) % maxSize; 队尾指针进1: rear = (rear+1) % maxSize; 队列初始化:front = rear = 0; 队空条件:front == rear; 队满条件:(rear+1) % maxSize == front ;0;队列的链接存储表示 — 链式队列;栈的应用:表达式求值;中缀表达式 a + b * ( c - d ) - e / f 后缀表达式 a b c d - * + e f / - 前缀表达式 - + a * b – c d / e f 表达式中相邻两个操作符的计算次序为: 优先级高的先计算; 优先级相同的自左向右计算; 当使用括号时从最内层括号开始计算。;应用后缀表示计算表达式的值;一般表达式的操作符有4种类型: 算术操作符 如双目操作符(

您可能关注的文档

文档评论(0)

xinshengwencai + 关注
实名认证
内容提供者

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档