数据结构堆栈幻灯片.ppt
《数据结构堆栈幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据结构堆栈幻灯片.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数据结构堆栈第1页,共38页,编辑于2022年,星期六4.1堆栈的概念及其运算堆栈的逻辑结构的逻辑结构堆栈:限定仅在表尾进行插入和删除操作的堆栈:限定仅在表尾进行插入和删除操作的线性表。线性表。空栈:不含任何数据元素的栈。空栈:不含任何数据元素的栈。允许插入和删除的一端称为栈顶,另一端称允许插入和删除的一端称为栈顶,另一端称为栈底。为栈底。(a1,a2,an)栈顶栈顶栈底栈底第2页,共38页,编辑于2022年,星期六abc入栈入栈出栈出栈栈底栈底栈顶栈顶插入:入栈、进栈、压栈插入:入栈、进栈、压栈插入:入栈、进栈、压栈插入:入栈、进栈、压栈删除:出栈、弹栈删除:出栈、弹栈删除:出栈、弹栈删除:
2、出栈、弹栈栈顶栈顶栈顶栈顶栈的示意图栈的示意图4.1堆栈的概念及其运算栈的操作特性:栈的操作特性:后进先出后进先出第3页,共38页,编辑于2022年,星期六4.1堆栈的概念及其运算例:有三个元素按例:有三个元素按例:有三个元素按例:有三个元素按a a、b b、c c的次序依次进栈,且每个元素只的次序依次进栈,且每个元素只的次序依次进栈,且每个元素只的次序依次进栈,且每个元素只允许进一次栈,则可能的出栈序列有多少种?允许进一次栈,则可能的出栈序列有多少种?允许进一次栈,则可能的出栈序列有多少种?允许进一次栈,则可能的出栈序列有多少种?栈底栈底栈顶栈顶ab栈顶栈顶c栈顶栈顶情况情况1:出栈序列:出
3、栈序列:c出栈序列:出栈序列:c、b出栈序列:出栈序列:c、b、a第4页,共38页,编辑于2022年,星期六例:有三个元素按例:有三个元素按例:有三个元素按例:有三个元素按a a、b b、c c的次序依次进栈,且每个元素只允的次序依次进栈,且每个元素只允的次序依次进栈,且每个元素只允的次序依次进栈,且每个元素只允许进一次栈,则可能的出栈序列有多少种?许进一次栈,则可能的出栈序列有多少种?许进一次栈,则可能的出栈序列有多少种?许进一次栈,则可能的出栈序列有多少种?栈底栈底栈顶栈顶ab栈顶栈顶情况情况2:出栈序列:出栈序列:b4.1堆栈的概念及其运算第5页,共38页,编辑于2022年,星期六栈底栈
4、底a出栈序列:出栈序列:b出栈序列:出栈序列:b、c出栈序列:出栈序列:b、c、ac栈顶栈顶栈顶栈顶注意:注意:栈只是对表插入和删除操作的位置进行了限制,并没栈只是对表插入和删除操作的位置进行了限制,并没有限定插入和删除操作进行的时间。有限定插入和删除操作进行的时间。情况情况2:例:有三个元素按例:有三个元素按例:有三个元素按例:有三个元素按a a、b b、c c的次序依次进栈,且每个元素的次序依次进栈,且每个元素的次序依次进栈,且每个元素的次序依次进栈,且每个元素只允许进一次栈,则可能的出栈序列有多少种?只允许进一次栈,则可能的出栈序列有多少种?只允许进一次栈,则可能的出栈序列有多少种?只允
5、许进一次栈,则可能的出栈序列有多少种?4.1堆栈的概念及其运算第6页,共38页,编辑于2022年,星期六堆栈的操作堆栈的操作堆栈的操作堆栈的操作Push(S,x)Push(S,x)Pop(S)Pop(S)Empty(S)Empty(S)Top(S)Top(S)Create(S)Create(S)4.1堆栈的概念及其运算第7页,共38页,编辑于2022年,星期六如何改造数组实现栈的顺序存储?如何改造数组实现栈的顺序存储?012345678a1确定用数组的哪一端表示栈底。确定用数组的哪一端表示栈底。附设指针附设指针top指示栈顶元素在数组中的位置。指示栈顶元素在数组中的位置。top4.2堆栈的顺序
6、存储结构第8页,共38页,编辑于2022年,星期六出栈:出栈:top减减1进栈:进栈:top加加1栈空:栈空:top=-1 012345678a1topa2topa3top栈满:栈满:top=MAX_SIZE4.2堆栈的顺序存储结构第9页,共38页,编辑于2022年,星期六堆栈是否为空测试算法堆栈是否为空测试算法堆栈是否为空测试算法堆栈是否为空测试算法p70p70进栈算法进栈算法进栈算法进栈算法p71p71退栈算法退栈算法退栈算法退栈算法4.2堆栈的顺序存储结构第10页,共38页,编辑于2022年,星期六解决方案解决方案1:直接解决:为每个栈开辟一个数组空间。直接解决:为每个栈开辟一个数组空间
7、。解决方案解决方案解决方案解决方案2 2:顺序栈单向延伸顺序栈单向延伸顺序栈单向延伸顺序栈单向延伸使用一个数组来存储两个栈使用一个数组来存储两个栈使用一个数组来存储两个栈使用一个数组来存储两个栈在一个程序中需要在一个程序中需要同时同时使用具有使用具有相同相同数据类型的数据类型的两个栈两个栈,如何顺序存储这两个栈?如何顺序存储这两个栈?会出现什么问题?如何解决?会出现什么问题?如何解决?4.2堆栈的顺序存储结构第11页,共38页,编辑于2022年,星期六两栈共享空间:两栈共享空间:两栈共享空间:两栈共享空间:使用一个数组来存储两个栈,让一个栈使用一个数组来存储两个栈,让一个栈使用一个数组来存储两
8、个栈,让一个栈使用一个数组来存储两个栈,让一个栈的栈底为该数组的始端,另一个栈的栈底为该数组的末的栈底为该数组的始端,另一个栈的栈底为该数组的末的栈底为该数组的始端,另一个栈的栈底为该数组的末的栈底为该数组的始端,另一个栈的栈底为该数组的末端,两个栈从各自的端点向中间延伸。端,两个栈从各自的端点向中间延伸。端,两个栈从各自的端点向中间延伸。端,两个栈从各自的端点向中间延伸。4.2堆栈的顺序存储结构第12页,共38页,编辑于2022年,星期六栈栈栈栈1 1的底固定在下标为的底固定在下标为的底固定在下标为的底固定在下标为0 0的一端;的一端;的一端;的一端;栈栈栈栈2 2的底固定在下标为的底固定在
9、下标为的底固定在下标为的底固定在下标为MaxSize-1MaxSize-1的一端。的一端。的一端。的一端。top1top1和和和和top2top2分别为栈分别为栈分别为栈分别为栈1 1和栈和栈和栈和栈2 2的栈顶指针;的栈顶指针;的栈顶指针;的栈顶指针;MaxSizeMaxSize为整个数组空间的大小(图中用为整个数组空间的大小(图中用为整个数组空间的大小(图中用为整个数组空间的大小(图中用S S表示);表示);表示);表示);a1a2aitop10 1 2 S-1top2bj b2b1栈栈1底底栈栈2底底4.2堆栈的顺序存储结构第13页,共38页,编辑于2022年,星期六top1=-1什么时
10、候栈什么时候栈1为空?为空?a1a2aitop10 1 2 S-1top2bj b2b1top14.2堆栈的顺序存储结构第14页,共38页,编辑于2022年,星期六top1=-1什么时候栈什么时候栈1为空?为空?a1a2aitop10 1 2 S-1top2bj b2b1什么时候栈什么时候栈2为空?为空?top2top2=MaxSize4.2堆栈的顺序存储结构第15页,共38页,编辑于2022年,星期六top1=-1什么时候栈什么时候栈1为空?为空?a1a2aitop10 1 2 S-1top2bj b2b1什么时候栈什么时候栈2为空?为空?top2=MaxSize什么时候栈满?什么时候栈满?
11、top2=top1+14.2堆栈的顺序存储结构第16页,共38页,编辑于2022年,星期六1.1.如果栈满,则抛出上溢异常;如果栈满,则抛出上溢异常;如果栈满,则抛出上溢异常;如果栈满,则抛出上溢异常;2.2.判断是插在栈判断是插在栈判断是插在栈判断是插在栈1 1还是栈还是栈还是栈还是栈2 2;2.12.1若在栈若在栈若在栈若在栈1 1插入,则插入,则插入,则插入,则2.1.1top12.1.1top1加加加加1;1;2.1.22.1.2在在在在top1top1处填入处填入处填入处填入x x;2.22.2若在栈若在栈若在栈若在栈2 2插入,则插入,则插入,则插入,则2.2.1top22.2.1
12、top2减减减减1;1;2.2.22.2.2在在在在top2top2处填入处填入处填入处填入x x;操作接口:操作接口:操作接口:操作接口:voidPush(inti,Tx)voidPush(inti,Tx);4.2堆栈的顺序存储结构第17页,共38页,编辑于2022年,星期六1.1.若是在栈若是在栈若是在栈若是在栈1 1删除,则删除,则删除,则删除,则1.11.1若栈若栈若栈若栈1 1为空栈,抛出下溢异常;为空栈,抛出下溢异常;为空栈,抛出下溢异常;为空栈,抛出下溢异常;1.21.2删除并返回栈删除并返回栈删除并返回栈删除并返回栈1 1的栈顶元素;的栈顶元素;的栈顶元素;的栈顶元素;2.2.
13、若是在栈若是在栈若是在栈若是在栈2 2删除,则删除,则删除,则删除,则2.12.1若栈若栈若栈若栈2 2为空栈,抛出下溢异常;为空栈,抛出下溢异常;为空栈,抛出下溢异常;为空栈,抛出下溢异常;2.22.2删除并返回栈删除并返回栈删除并返回栈删除并返回栈2 2的栈顶元素;的栈顶元素;的栈顶元素;的栈顶元素;操作接口:操作接口:操作接口:操作接口:TPop(inti)TPop(inti);4.2堆栈的顺序存储结构第18页,共38页,编辑于2022年,星期六heada1a2anai链栈需要加头结点吗?链栈需要加头结点吗?如何改造链表实现栈的链接存储?如何改造链表实现栈的链接存储?将哪一端作为栈顶?将
14、哪一端作为栈顶?将链头作为栈顶,方便操作。将链头作为栈顶,方便操作。将链头作为栈顶,方便操作。将链头作为栈顶,方便操作。链栈不需要附设头结点。链栈不需要附设头结点。链栈不需要附设头结点。链栈不需要附设头结点。4.3堆栈的链式存储结构第19页,共38页,编辑于2022年,星期六栈顶栈顶栈底栈底链栈:链栈:链栈:链栈:栈的链接存储结构栈的链接存储结构栈的链接存储结构栈的链接存储结构topanan-1a1heada1a2anai两种示意图在内存中两种示意图在内存中两种示意图在内存中两种示意图在内存中对应同一种状态对应同一种状态对应同一种状态对应同一种状态topa1an-1an栈顶栈顶栈底栈底4.3堆
15、栈的链式存储结构第20页,共38页,编辑于2022年,星期六4.3堆栈的链式存储结构 入栈:入栈:入栈:入栈:p75p75 出栈:出栈:出栈:出栈:p75p75操作接口:操作接口:操作接口:操作接口:第21页,共38页,编辑于2022年,星期六4.3堆栈的链式存储结构顺序栈和链栈的比较顺序栈和链栈的比较顺序栈和链栈的比较顺序栈和链栈的比较 时间性能:相同,都是常数时间时间性能:相同,都是常数时间时间性能:相同,都是常数时间时间性能:相同,都是常数时间O(1)O(1)。空间性能:空间性能:空间性能:空间性能:顺序栈:有元素个数的限制和空间浪费的问题。顺序栈:有元素个数的限制和空间浪费的问题。顺序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 堆栈 幻灯片
限制150内