合工大数据结构02-栈.ppt
《合工大数据结构02-栈.ppt》由会员分享,可在线阅读,更多相关《合工大数据结构02-栈.ppt(29页珍藏版)》请在三一办公上搜索。
1、1,数 据 结 构(第二章 栈)Data Structures张晶计算机与信息学院 2023/9/6,2,第二章 栈,第二章 栈(stack)2.1 栈的定义和运算 2.2 顺序栈 2.3 栈的应用,3,第二章 栈,栈是软件设计中最基本的数据结构,这是本课程所介绍的第一种数据结构。学习栈结构时,需要掌握哪些方面的内容?为此,回顾一下上一章所介绍的数据结构的组成部分。由此可知,对每一种结构的学习的组成部分。,逻辑结构,分析,运算实现(算法),运算定义,数据结构的组成,4,2.1 栈的定义和运算,2.1.1 栈的定义栈是只能在一端插入和删除元素的线性表。术语:栈顶,栈底,入栈(压栈),出栈(弹栈)
2、,入栈(PUSH),出栈(POP),栈顶(top),栈底(bottom),逻辑结构和运算,a1 a2 an,特性:后进先出(LIFO)-Last in First out,a1,a2,an,an,a2,a1,5,2.1 栈的定义和运算,2.1.2 栈的运算1.栈的基本运算定义对栈的基本运算有如下几个:(1)初始化:设置栈为空。(2)判断栈为空:若为空,则返回TRUE,否则返回FALSE.(3)判断栈为满:若为满,则返回TRUE,否则返回FALSE.(4)取栈顶元素:取出栈顶元素。条件:栈不空。否则,应能明确给出标识,以便程序的处理。(5)入栈:将元素入栈,即放到栈顶。如果栈满,怎样处理?(6)
3、出栈:删除当前栈顶的元素。如因为栈空而不能进行,应怎样处理?,运算定义,6,2.1.2 栈的运算,2.栈的运算的C+描述如何用C+描述栈的内容和运算?一种方法是:将栈的有关数据和运算封装在一起,以C+的类的形式来封装描述。封装的数据和运算要便于被有关程序来调用。因此,栈的C+描述的框架如下所示:class stack;,运算描述部分,数据描述部分,类的名称,类的框架,7,2.1.2 栈的运算,下面讨论栈的运算的C+描述的细节,先给出每一个运算的对应描述:初始化函数的描述,栈的C+类描述:class stack stack();栈的数据成员;,栈的运算(1)初始化:设置栈为空。(2)判断栈为空:
4、若为空,则返回TRUE,否则返回FALSE.(3)判断栈为满:若为满,则返回TRUE,否则返回FALSE.(4)取栈顶元素:取出栈顶元素。条件:栈不空。否则,应能明确给出标识,以便程序的处理。(5)入栈:将元素入栈,即放到栈顶。如果栈满,怎样处理?(6)出栈:删除当前栈顶的元素。如因为栈空而不能进行,应怎样处理?,采用C+的构造函数,8,2.1.2 栈的运算,判断函数的对应,栈的C+类描述:class stack stack();Bool empty()Bool full()栈的数据成员;,栈的运算(1)初始化:设置栈为空。(2)判断栈为空:若为空,则返回TRUE,否则返回FALSE.(3)判
5、断栈为满:若为满,则返回TRUE,否则返回FALSE.(4)取栈顶元素:取出栈顶元素。条件:栈不空。否则,应能明确给出标识,以便程序的处理。(5)入栈:将元素入栈,即放到栈顶。如果栈满,怎样处理?(6)出栈:删除当前栈顶的元素。如因为栈空而不能进行,应怎样处理?,判断为空的函数,判断为满的函数,const;,const;,9,2.1.2 栈的运算,其他几个函数的对应描述分析:(1)几个运算的条件可能有不成立的情况,因此,需要给予明确的反映。(2)设立运算是否正常的类型error_code,正常时返回success,否则返回错误类型,如overflow,underflow等。enum error
6、_code success,overflow,underflow;(3)可以将这几个函数的类型设置为error_code;(4)如果需要返回其他的值,可以作为参数来返回。,10,2.1.2 栈的运算,由上述讨论可得到其他几个函数的功能描述:(4)取栈顶元素的运算功能描述:如果栈不空,则取出栈顶元素到参数x中,然后返回success。否则,返回downflow。对应的运算函数为:error_code get_top(elementtype,11,2.1.2 栈的运算,(6)出栈的运算功能描述:如果栈不空,删除当前栈顶的元素,并返回success。否则,返回underflow。对应的运算函数为:e
7、rror_code pop();,12,2.1.2 栈的运算,由此得到栈的类stack的函数成员列表如下:class stack stack();/初始化 Bool empty()const;/判断空 Bool full()const;/判断满 error_code get_top(elementtype 问题:上述类的描述是否还需要补充什么?,13,2.2 顺序栈,2.2.1 存储结构:假设有一个足够大的存储空间(数组)data,可用于存储栈的元素。则可将栈中元素连续地存储到数组的各元素-顺序存储方式。如下图所示:其中:为了能随时知道栈中的元素个数,设置了一个计数变量count。将数组dat
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 合工大 数据结构 02
链接地址:https://www.31ppt.com/p-5944840.html