【教学课件】第三章栈与队列.ppt
《【教学课件】第三章栈与队列.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第三章栈与队列.ppt(56页珍藏版)》请在三一办公上搜索。
1、第三章 栈与队列,东南大学计算机学院 方效林,本课件借鉴了清华大学殷人昆老师和哈尔滨工业大学张岩老师的课件,本章主要内容,栈栈的应用:表达式求值栈与递归队列队列的应用:电路布线,2,栈,定义:只允许在表的末端进行插入和删除的线性表特点:先进后出栈的操作进栈 push()出栈 pop()栈顶 top()置空 setEmpty()判断是否为空 isEmpty()栈满 isFull(),3,栈,栈的数组表示栈的操作进栈 push()出栈 pop()栈顶 top()置空 makeEmpty()判断是否为空 isEmpty()栈满 isFull(),4,a,b,c,空栈,栈,栈的单链表表示栈的数组表示可
2、能栈满栈的单链表表示无栈满问题入栈在表头进行插入操作出栈在表头进行删除操作,5,栈,进栈顺序为(1,2,3),出栈顺序能否为(3,1,2)?不能,3出栈时,说明2和1都在栈里,而且2必须先于1出栈,6,作业:1,2,3,4,5,6依次进栈,若出栈顺序为2,3,4,6,5,1则栈大小至少为多少?,栈的应用:表达式求值,一个表达式由操作数(亦称运算对象)、操作符(亦称运算符)和分界符组成。算术表达式三种表示中缀(infix)表示,如 A+B;前缀(prefix)表示,如+AB;后缀(postfix)表示,如 AB+;,7,栈的应用:表达式求值,中缀表达式:A+B*(C-D)-E/F后缀表达式:A
3、B C D-*+E F/-表达式中相邻两个操作符的计算次序为:优先级高的先计算;优先级相同的自左向右计算;当使用括号时从最内层括号开始计算。前缀和中缀表达式求值需要两个栈;后缀表达式求值只需一个栈,相对简单些。,8,栈的应用:表达式求值,从左向右扫描表达式,用一个栈暂存扫描到的操作数或计算结果。后缀表达式的计算顺序中已隐含了加括号的优先次序,括号在后缀表达式中不出现,9,中缀表达式:,后缀表达式:,10,作业:写出下列中缀表达式的后缀表达式A*B*C-A+B-C+DA*(-B)+C(A+B)*D+E/(F+A*D)+CA&B|!(EF)!(A&!(BD)|(CE),栈的应用:表达式求值,后缀表
4、达式求值过程顺序扫描后缀表达式每一项若该项是操作数,则进栈若该项是操作符,若是单目运算符,则出栈一个操作数X,并将计算结果X进栈若是双目运算符,则连续出栈两个操作数X和Y,并将计算结果X Y进栈当表达式的所有项都扫描并处理完后,栈顶存放的就是最后的计算结果。,11,栈的应用:表达式求值,12,B,A,C,D,后缀表达式求值过程:,栈的应用:表达式求值,13,B,A,C,D,R1=C-D,后缀表达式求值过程:,栈的应用:表达式求值,14,B,A,R1=C-D,R2=B*R1,后缀表达式求值过程:,栈的应用:表达式求值,15,A,R2=B*R1,R3=A+R2,后缀表达式求值过程:,栈的应用:表达
5、式求值,16,R3=A+R2,E,F,后缀表达式求值过程:,栈的应用:表达式求值,17,R3=A+R2,E,F,R4=E/F,后缀表达式求值过程:,栈的应用:表达式求值,18,R3=A+R2,R4=E/F,R5=R3-R4,后缀表达式求值过程:,栈的应用:表达式求值,中缀表达式转换为后缀表达式使用栈将中缀表达式转换成前缀或后缀表达式。为了实现转换,需要考虑各操作符的优先级。结束符“#”优先级最低左括号“(”栈外优先级最高,进栈后极低右括号“)”栈外优先级极低其他进栈后优先级加1,这可满足自左向右计算要求,19,各个算术操作符的优先级,栈的应用:表达式求值,中缀表达式转换为后缀表达式算法操作符栈
6、初始化,结束符#进栈,读入中缀表达式的首字符ch重复执行以下步骤,直到ch=#,同时栈顶操作符也是#,停止循环若ch是操作数直接输出,读入下一字符ch若ch是操作符,比较ch和栈顶操作符op优先级:若icp(ch)isp(op),令ch进栈,读入下一字符ch若icp(ch)isp(op),退栈,并输出若icp(ch)=isp(op),退栈不输出;若退出的是(,则读入下一个字符ch算法结束,输出序列即为所得后缀表达式,20,栈的应用:表达式求值,21,中缀表示转换为后缀表示过程:,A,C,后缀输出:,#,+,*,(,-,B,栈的应用:表达式求值,22,中缀表示转换为后缀表示过程:,A,B,C,D
7、,-,后缀输出:,#,+,*,(,-,栈的应用:表达式求值,23,中缀表示转换为后缀表示过程:,#,+,*,A,B,C,D,-,*,+,后缀输出:,栈的应用:表达式求值,24,中缀表示转换为后缀表示过程:,#,-,/,A,B,C,D,-,*,+,E,F,/,-,后缀输出:,作业,程序实现简单的中缀表达式求值数字均为一位数,即0-9运算符只有+-*/(),25,栈与递归,递归的定义若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的;若一个过程直接地或间接地调用自己,则称这个过程是递归的过程。以下三种情况常常用到递归方法。定义是递归的数据结构是递归的问题的解法是递归的,26,栈
8、与递归,定义是递归的例如,阶乘函数(Factorial)求解阶乘函数的递归算法long Factorial(long n)if(n=0)return 1;else return n*Factorial(n-1);,27,栈与递归,定义是递归的例如,阶乘函数(Factorial),28,栈与递归,数据结构是递归的例如,单链表结构搜索单链表中值等于x的结点 LinkNode*Search(LinkNode*f,Type x)if(f=null)return null;else if(f-data=x)return f;else Search(f-link,x);,29,struct LinkNod
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 第三 队列

链接地址:https://www.31ppt.com/p-5660870.html