数据结构栈学习教案.pptx
《数据结构栈学习教案.pptx》由会员分享,可在线阅读,更多相关《数据结构栈学习教案.pptx(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1数据结构数据结构(sh j ji u)栈栈第一页,共30页。2第二章第二章 栈栈 第二章 栈(stack)2.1 栈的定义和运算(yn sun)2.2 顺序栈 2.3 栈的应用 第1页/共30页第二页,共30页。3第二章第二章 栈栈栈是软件设计中最基本栈是软件设计中最基本栈是软件设计中最基本栈是软件设计中最基本(jbn)(jbn)的数据结构,的数据结构,的数据结构,的数据结构,这是本课程所介绍的第一种数据结构。这是本课程所介绍的第一种数据结构。这是本课程所介绍的第一种数据结构。这是本课程所介绍的第一种数据结构。学习栈结构时,需要掌握哪些方面的内容?学习栈结构时,需要掌握哪些方面的内容?
2、学习栈结构时,需要掌握哪些方面的内容?学习栈结构时,需要掌握哪些方面的内容?为此,回顾一下上一章所介绍的数据结构的组成部分。为此,回顾一下上一章所介绍的数据结构的组成部分。为此,回顾一下上一章所介绍的数据结构的组成部分。为此,回顾一下上一章所介绍的数据结构的组成部分。由此可知,对每一种结构的学习的组成部分。由此可知,对每一种结构的学习的组成部分。由此可知,对每一种结构的学习的组成部分。由此可知,对每一种结构的学习的组成部分。逻辑(lu j)结构分析(fnx)运算实现(算法)运算定义 存储结构数据结构的组成第2页/共30页第三页,共30页。42.1 2.1 栈的定义栈的定义栈的定义栈的定义(dn
3、gy)(dngy)和运算和运算和运算和运算栈的定义栈的定义栈的定义栈的定义栈是只能在一端插入和删除元素栈是只能在一端插入和删除元素栈是只能在一端插入和删除元素栈是只能在一端插入和删除元素(yun s)(yun s)的线性表。的线性表。的线性表。的线性表。术语:栈顶术语:栈顶术语:栈顶术语:栈顶,栈底栈底栈底栈底,入栈(压栈)入栈(压栈)入栈(压栈)入栈(压栈),出栈(弹栈)出栈(弹栈)出栈(弹栈)出栈(弹栈)an an-1 a1入栈(PUSH)出栈(POP)栈顶(top)栈底(bottom)逻辑结构(jigu)和运算a1 a2 an 特性:后进先出(LIFO)-Last in First ou
4、t a1a2anana2a1第3页/共30页第四页,共30页。52.1 栈的定义栈的定义(dngy)和运算和运算栈的运算栈的运算栈的运算栈的运算(yn sun)(yn sun)(yn sun)(yn sun)1.1.1.1.栈的基本运算栈的基本运算栈的基本运算栈的基本运算(yn sun)(yn sun)(yn sun)(yn sun)定义定义定义定义对栈的基本运算对栈的基本运算对栈的基本运算对栈的基本运算(yn sun)(yn sun)(yn sun)(yn sun)有如下几个:有如下几个:有如下几个:有如下几个:(1)(1)(1)(1)初始化初始化初始化初始化 :设置栈为空。:设置栈为空。:
5、设置栈为空。:设置栈为空。(2)(2)(2)(2)判断栈为空:判断栈为空:判断栈为空:判断栈为空:若为空,则返回若为空,则返回若为空,则返回若为空,则返回TRUETRUETRUETRUE,否则返回,否则返回,否则返回,否则返回FALSE.FALSE.FALSE.FALSE.(3)(3)(3)(3)判断栈为满:判断栈为满:判断栈为满:判断栈为满:若为满,则返回若为满,则返回若为满,则返回若为满,则返回TRUETRUETRUETRUE,否则返回,否则返回,否则返回,否则返回FALSE.FALSE.FALSE.FALSE.(4)(4)(4)(4)取栈顶元素:取出栈顶元素。取栈顶元素:取出栈顶元素。取
6、栈顶元素:取出栈顶元素。取栈顶元素:取出栈顶元素。条件:栈不空。条件:栈不空。条件:栈不空。条件:栈不空。否则,应能明确给出标识,以便程序的处理。否则,应能明确给出标识,以便程序的处理。否则,应能明确给出标识,以便程序的处理。否则,应能明确给出标识,以便程序的处理。(5)(5)(5)(5)入栈:将元素入栈,即放到栈顶。入栈:将元素入栈,即放到栈顶。入栈:将元素入栈,即放到栈顶。入栈:将元素入栈,即放到栈顶。如果栈满,怎样处理?如果栈满,怎样处理?如果栈满,怎样处理?如果栈满,怎样处理?(6)(6)(6)(6)出栈:删除当前栈顶的元素。出栈:删除当前栈顶的元素。出栈:删除当前栈顶的元素。出栈:删
7、除当前栈顶的元素。如因为栈空而不能进行,应怎样处理?如因为栈空而不能进行,应怎样处理?如因为栈空而不能进行,应怎样处理?如因为栈空而不能进行,应怎样处理?运算(yn sun)定义第4页/共30页第五页,共30页。6栈的运算栈的运算(yn sun)2.栈的运算的栈的运算的C+描述描述如何用如何用C+描述栈的内容和运算?描述栈的内容和运算?一种方法是:一种方法是:将栈的有关数据和运算封装在一起,将栈的有关数据和运算封装在一起,以以C+的类的形式来封装描述。的类的形式来封装描述。封装的数据和运算要便于被有关程序来调用。封装的数据和运算要便于被有关程序来调用。因此,栈的因此,栈的C+描述的框架描述的框
8、架(kun ji)如下所如下所示:示:class stack ;运算描述(mio sh)部分数据描述部分类的名称类的框架第5页/共30页第六页,共30页。7栈的运算栈的运算(yn sun)n n下面下面下面下面(xi mian)(xi mian)讨论栈的运算的讨论栈的运算的讨论栈的运算的讨论栈的运算的C+C+描述的细节,先给出每一个运算的对应描述:描述的细节,先给出每一个运算的对应描述:描述的细节,先给出每一个运算的对应描述:描述的细节,先给出每一个运算的对应描述:n n初始化函数的描述初始化函数的描述初始化函数的描述初始化函数的描述栈的C+类描述(mio sh):class stack st
9、ack();栈的数据成员;栈的运算(1)初始化:设置栈为空。(2)判断栈为空:若为空,则返回TRUE,否则返回FALSE.(3)判断栈为满:若为满,则返回TRUE,否则返回FALSE.(4)取栈顶元素:取出栈顶元素。条件:栈不空。否则,应能明确给出标识,以便程序的处理。(5)入栈:将元素入栈,即放到栈顶。如果栈满,怎样处理?(6)出栈:删除当前栈顶的元素。如因为栈空而不能进行,应怎样处理?采用C+的构造函数第6页/共30页第七页,共30页。8栈的运算栈的运算(yn sun)n n判断函数判断函数(hnsh)的对应的对应栈的C+类描述:class stack stack();Bool empty
10、()Bool full()栈的数据(shj)成员;栈的运算(1)初始化:设置栈为空。(2)判断栈为空:若为空,则返回TRUE,否则返回FALSE.(3)判断栈为满:若为满,则返回TRUE,否则返回FALSE.(4)取栈顶元素:取出栈顶元素。条件:栈不空。否则,应能明确给出标识,以便程序的处理。(5)入栈:将元素入栈,即放到栈顶。如果栈满,怎样处理?(6)出栈:删除当前栈顶的元素。如因为栈空而不能进行,应怎样处理?判断为空的函数判断为满的函数const;const;第7页/共30页第八页,共30页。9栈的运算栈的运算(yn sun)n n其他几个函数的对应描述其他几个函数的对应描述其他几个函数的
11、对应描述其他几个函数的对应描述n n分析:分析:分析:分析:n n(1 1)几个运算)几个运算)几个运算)几个运算(yn sun)(yn sun)的条件可能有不成立的情况,的条件可能有不成立的情况,的条件可能有不成立的情况,的条件可能有不成立的情况,n n 因此,需要给予明确的反映。因此,需要给予明确的反映。因此,需要给予明确的反映。因此,需要给予明确的反映。n n(2 2)设立运算)设立运算)设立运算)设立运算(yn sun)(yn sun)是否正常的类型是否正常的类型是否正常的类型是否正常的类型error_codeerror_code,n n正常时返回正常时返回正常时返回正常时返回succ
12、ess,success,n n否则返回错误类型,如否则返回错误类型,如否则返回错误类型,如否则返回错误类型,如overflow,underflowoverflow,underflow等。等。等。等。n n enum error_code success,overflow,underflow;enum error_code success,overflow,underflow;n n(3 3)可以将这几个函数的类型设置为)可以将这几个函数的类型设置为)可以将这几个函数的类型设置为)可以将这几个函数的类型设置为error_codeerror_code;n n(4 4)如果需要返回其他的值,可以作为
13、参数来返回。)如果需要返回其他的值,可以作为参数来返回。)如果需要返回其他的值,可以作为参数来返回。)如果需要返回其他的值,可以作为参数来返回。第8页/共30页第九页,共30页。10栈的运算栈的运算(yn sun)由上述讨论可得到其他几个函数的功能描述(mio sh):(4)取栈顶元素的运算功能描述(mio sh):如果栈不空,则取出栈顶元素到参数x中,然后返回success。否则,返回downflow。对应的运算函数为:error_code get_top(elementtype&x)const;(5)入栈的运算功能描述(mio sh):如果栈不满,则将元素入栈,并返回success。否则,
14、返回overflow。对应的运算函数为:error_code push(const elementtype x);第9页/共30页第十页,共30页。11栈的运算栈的运算(yn sun)(6)(6)(6)(6)出栈的运算功能描述出栈的运算功能描述出栈的运算功能描述出栈的运算功能描述(mio sh)(mio sh)(mio sh)(mio sh):如果栈不空,删除当前栈顶的元素,并返回如果栈不空,删除当前栈顶的元素,并返回如果栈不空,删除当前栈顶的元素,并返回如果栈不空,删除当前栈顶的元素,并返回successsuccesssuccesssuccess。否则,返回否则,返回否则,返回否则,返回un
15、derflowunderflowunderflowunderflow。对应的运算函数为:对应的运算函数为:对应的运算函数为:对应的运算函数为:error_code pop();error_code pop();error_code pop();error_code pop();第10页/共30页第十一页,共30页。12栈的运算栈的运算(yn sun)n n由此得到栈的类由此得到栈的类由此得到栈的类由此得到栈的类stackstack的函数成员列表如下:的函数成员列表如下:的函数成员列表如下:的函数成员列表如下:n nclass stackclass stackn n stack();/stack
16、();/初始化初始化初始化初始化n n Bool empty()const;/Bool empty()const;/判断空判断空判断空判断空n n Bool full()const;/Bool full()const;/判断满判断满判断满判断满n n error_code get_top(elementtype&x)const;error_code get_top(elementtype&x)const;n n /取栈顶元素取栈顶元素取栈顶元素取栈顶元素n n error_code push(const elementtype x);/error_code push(const element
17、type x);/入栈入栈入栈入栈n n error_code pop();/error_code pop();/出栈出栈出栈出栈n n 栈的数据成员栈的数据成员栈的数据成员栈的数据成员;n n;n n问题:上述类的描述问题:上述类的描述问题:上述类的描述问题:上述类的描述(mio sh)(mio sh)是否还需要补充什么?是否还需要补充什么?是否还需要补充什么?是否还需要补充什么?第11页/共30页第十二页,共30页。132.2 顺序顺序(shnx)栈栈n n存储结构:存储结构:存储结构:存储结构:n n假设有一个足够大的存储空间(数组)假设有一个足够大的存储空间(数组)假设有一个足够大的存
18、储空间(数组)假设有一个足够大的存储空间(数组)data,data,可用于存储栈的元素。可用于存储栈的元素。可用于存储栈的元素。可用于存储栈的元素。n n则可将栈中元素连续地存储到数组的各元素则可将栈中元素连续地存储到数组的各元素则可将栈中元素连续地存储到数组的各元素则可将栈中元素连续地存储到数组的各元素-顺序存储方式。顺序存储方式。顺序存储方式。顺序存储方式。n n如下图所示:如下图所示:如下图所示:如下图所示:n n其中:为了其中:为了其中:为了其中:为了(wi le)(wi le)能随时知道栈中的元素个数,设置了一个计数变量能随时知道栈中的元素个数,设置了一个计数变量能随时知道栈中的元素
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学习 教案
限制150内