3栈队列数组.ppt

3栈队列数组.ppt

ID:48403376

大小:531.50 KB

页数:44页

时间:2020-01-19

3栈队列数组.ppt_第1页
3栈队列数组.ppt_第2页
3栈队列数组.ppt_第3页
3栈队列数组.ppt_第4页
3栈队列数组.ppt_第5页
资源描述:

《3栈队列数组.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构DataStructure第三章栈、队列和数组第三章栈、队列和数组3.1栈3.2队列3.3数组3.4栈的应用——栈和递归3.1栈-定义栈——只能在一端插入和删除元素的线性表特点:后进先出(LIFO)术语:栈顶栈底入栈(压栈)出栈(弹栈)a1a2…ananan-1……a1入栈入栈栈顶栈底3.1栈-运算栈的基本运算(1)初始化栈:init_stack(S);(2)判栈空:stack_empty(S);(3)判栈满:stack_full(S);(4)读栈顶元素:stack_top(S,x);(5)入

2、栈:push_stack(S,x);(6)出栈:pop_stack(S);3.1栈-顺序栈存储结构1、顺序栈存储结构——采用顺序表来存储的栈#definemaxsize最大容量typedefstruct{elementtypedata[maxsize];inttop;//指示栈顶元素的位置}seqstack;a1a2a3a4…andatatopseqstack3.1栈-顺序栈图例a2a3a1top3210-13210-1top空栈栈顶元素为a33.1栈-顺序栈运算实现(1)初始化:voidinit_s

3、tack(seqstack*S){S->top=-1;}(2)判栈空:BOOLstack_empty(seqstackS){return(S.top==-1);}(3)判栈满:BOOLstack_full(seqstackS){if(S.top==maxsize-1)return(TRUE);elsereturnFALSE;}(4)读栈顶元素:voidstack_top(seqstack*S,elementtype&x){if(S->top==-1)error(“栈空”);elsex=S->data[

4、s->top];}3.1栈-顺序栈运算实现(入栈/出栈)(5)入栈:voidpush_stack(seqstack*S,elementtypex){if(S->top==maxsize-1)error(“栈满”);else{S->top++;S->data[S->top]=x;}}(6)出栈:voidpop_stack(seqstack*S,elementtype&x){if(stack_empty(*S))error(“栈空,不能删除”);elsex=S->data[S->top--];}3.1栈-

5、链栈链栈结构图—采用链表来存储的栈a1a2a3a4^top链栈出栈:a1a2a3a4^top链栈入栈:a1a2a3a4^topxP3.1栈-栈的应用表达式的计算:模拟表达式:12+5*(2+3)*6/2-4的求解过程。例运算符操作数#12+5*(2+3)*6/2-4#操作数运算符各自依次入栈。出栈规则:当前入栈的运算符 比栈顶的运算符优先级低。3.1栈-栈的应用(表达式计算)表达式的计算以表达式12+5*(2+3)*6/2-4的计算过程的实现为例来讨论栈结构在实现对任意输入的通用表达式的计算中的作用#

6、12+5*(2+3)*6/2-4#开始时,指向第一个位置,准备读入,此时的两个栈均为空。CurrentS=‘#’3.1栈-栈的应用(表达式计算)表达式的计算以表达式12+5*(2+3)*6/2-4的计算过程的实现为例来讨论栈结构在实现对任意输入的通用表达式的计算中的作用#12+5*(2+3)*6/2-4#开始时,指向第一个位置,准备读入,此时的两个栈均为空。#12+5*(2+3)*6/2-4##12CurrentS=‘+’栈顶算符‘#’比当前运算符‘+’优先级低,故算符‘+’要入栈CurrentS=‘

7、#’3.1栈-栈的应用(表达式计算)#12+5*(2+3)*6/2-4#CurrentS=‘+’依次读入5、×、(、2和+后,栈顶算符‘(’比当前算符‘+’优先级低,故‘+’要入栈(X+#25123.1栈-栈的应用(表达式计算)#12+5*(2+3)*6/2-4##12+5*(2+3)*6/2-4#CurrentS=‘+’依次读入5、×、(、2和+后,栈顶算符‘(’比当前算符‘+’优先级低,故‘+’要入栈(X+#2512CurrentS=‘)’+(X+#32512栈顶算符‘+’比当前运算符‘)’优先级

8、高,故要执行其运算2+3并入栈3.1栈-栈的应用(表达式计算)#12+5*(2+3)*6/2-4#CurrentS=‘)’(X+#5512栈顶算符‘(’与当前运算符‘)’相对应,故要出栈,一同释放3.1栈-栈的应用(表达式计算)#12+5*(2+3)*6/2-4##12+5*(2+3)*6/2-4#CurrentS=‘)’(X+#5512CurrentS=‘X’X+#5512栈顶算符‘(’与当前运算符‘)’相对应,故要出栈,一同释放栈顶算符‘×’比当前运

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。