第三章堆栈和队列ppt课件.ppt

第三章堆栈和队列ppt课件.ppt

ID:58691632

大小:704.00 KB

页数:73页

时间:2020-10-04

第三章堆栈和队列ppt课件.ppt_第1页
第三章堆栈和队列ppt课件.ppt_第2页
第三章堆栈和队列ppt课件.ppt_第3页
第三章堆栈和队列ppt课件.ppt_第4页
第三章堆栈和队列ppt课件.ppt_第5页
资源描述:

《第三章堆栈和队列ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第三章堆栈和队列Chapter3StackandQueue3.1堆栈(Stack)3.2队列(Queue)1.定义2.逻辑结构3.存储结构4.运算规则5.实现方式1.定义2.逻辑结构3.存储结构4.运算规则5.实现方式本章内容3.1堆栈一、堆栈的基本概念定义堆栈是限定只能在表的一端进行插入和删除的线性表。在表中允许插入和删除的一端叫做栈顶(top);表的另一端则叫做栈底(base)。出栈或退栈入栈或进栈a0a1…an-2an-1basetopLastInFirstOut一般线性表逻辑结构:一对一存储结构:顺序表、链表

2、运算规则:随机存取堆栈逻辑结构:一对一存储结构:顺序栈、链栈运算规则:后进先出(LIFO)*堆栈与一般线性表的比较*例一个栈的输入序列为123,若在入栈的过程中允许出栈,则可能得到的出栈序列是什么?答:可以通过穷举所有可能性来求解:①1入1出,2入2出,3入3出,即123;②1入1出,2、3入,3、2出,即132;③1、2入,2出,3入3出,1出即231;④1、2入,2、1出,3入3出,即213;⑤1、2、3入,3、2、1出,即321;合计有5种可能性。*不可能产生的输出序列:3121、初始化2、进栈3、退栈4、取栈

3、顶元素5、判栈是否非空二、堆栈的操作三、栈的顺序表示和实现——顺序堆栈1.顺序栈的存储结构出栈或退栈入栈或进栈basetopa0a1a3a4a5maxlen-1543210顺序栈的定义typedefintDataType;#definemaxlen100/*顺序堆栈数组最大存储单元个数*/typedefstruct/*顺序栈定义*/{DataTypestack[maxlen];/*顺序堆栈存放数据元素的数组*/inttop;/*顺序堆栈的当前栈顶位置*/}seqstack;/*结构类型名*/2.顺序堆栈的操作实现to

4、ptopa0a1a2toptopmaxlen个空栈a0进栈a1进栈a2进栈a2出栈top初始化参数:S是指向结构变量的指针;功能:建一个空栈S;voidinistack(seqstack*s){s->top=-1;}/*顺序堆栈数组的当前栈顶位置*/判栈空操作参数:S是存放结构体变量的数组;功能:判断S是否为空,为空返回1,否则返回0;intempty(seqstacks){if(s.top==-1)return1;elsereturn0;}入栈功能:将数据元素x压入顺序堆栈S,入栈成功返回1,否则返回0intpus

5、h(seqstack*s,DataTypex){if(s->top==maxlen-1){printf(“Stackisfull”);return0;}s->top++;s->stack[s->top]=x;return1;}判栈满?栈顶下标加1入栈s->stack[++s->top]=x;出栈功能:弹出顺序堆栈s的栈顶数据元素值到参数d,出栈成功返回1,否则返回0判栈空?元素出栈栈顶下标减1else{*d=s->stack[s->top];(s->top)--;return1;}}intpop(seqstack

6、*s,DataType*d){if(s->top==-1){printf("Stackisempty!");return0;}*d=s->stack[s->top--];取栈顶元素功能:取顺序堆栈s的当前栈顶数据元素值到参数d,成功返回1,否则返回0intgettop(seqstacks,DataType*d){if(s.top==-1){printf(“Stackisempty!”);return0;}else{*d=s.stack[s.top];return1;}}堆栈算法练习顺序栈的C语言描述:type

7、defintelemtype;#definemaxlen10typedefstruct{elemtypestack[maxlen];inttop;}SeqStack;写出堆栈的入栈和出栈算法两个堆栈共享空间目的:节省空间扩展知识——堆栈共用问题两个堆栈共享空间的运算:初始化进栈出栈a0…aiaj…am0maxlen-1LeftTopRightTop…数据结构定义:typedefstruct{DataTypestack[maxlen];intLeftTop;intRightTop;}dqstack;初始化算法voidI

8、nitiDqstack(dqstack*s);{s->LeftTop=-1;s->RightTop=maxlen;}intPushDqstack(dqstack*s,charWhichStack,DataTypex){if(s->LeftTop>=s->RightTop-1){printf(“栈满”);return0;}if(WhichStac

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

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

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