数据结构二版杨枨数据结构:第四章:栈和队列课件.pptVIP

数据结构二版杨枨数据结构:第四章:栈和队列课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构二版杨枨数据结构:第四章:栈和队列课件.ppt

2003年12月1日 软件需求工程 第四章 栈和队列 从逻辑关系的角度来看,栈和队列与线性表相同。 从运算的角度来看,栈和队列的操作是线性表操作的子集。 4.1 栈 4.2 栈的应用 4.3 队列 4.4 队列的应用 4.5 小结 4.1 栈 栈的定义 栈是指插入和删除都限定在表尾进行的线性表。 在栈中允许插入、删除的表尾叫做栈顶,不允许插入、删除的表头叫做栈底。 栈的结构 假设,栈Stack =(a1,a2,…,an),则a1为栈底元素,a1为栈顶元素。栈中元素的插入(进栈)次序为a1,a2,…,an。而删除(出栈)次序为an,an-1,…,a1。 栈中元素被处理时,按照先进后出的顺序进行,所以栈又称为先进后出(FILO - First In Last Out)的线性表。 4.1 栈 栈的基本操作 1. ? 初始化:生成一个新的空栈。 2. ? 进栈:向栈中加入一个新的元素,作为新的栈顶 3. ? 出栈:取得栈顶元素,并将它从栈中删除。 4. ? 取栈顶元素:取得栈顶元素的值。 5. 判空:判别一个栈是否为空。若为空,返回TRUE;否则,返回FALSE。 4.1.1 顺序栈 栈的顺序存储结构简称顺序栈。 利用一组地址连续的存储单元来存放栈中的数据元素。 在C语言中,通常用一维数组来定义顺序栈。 设置栈顶指针来指示栈顶元素的位置。 4.1.1 顺序栈(续1) 存储结构定义 4.1.1 顺序栈(续2) 五种基本操作的实现 4.1.2 链接栈 链栈结构形式与单链表相似。 链栈的栈顶指针就是链表的头指针,结点的插入和删除操作只能在此进行。 链栈的所有操作只针对链栈的头部,故链栈不设头结点。 4.1.2 链接栈(续1) 链栈的结点结构定义 4.1.2 链接栈(续2) 五种基本操作的实现 4.2 栈的应用 函数调用与栈 递归与栈 迷宫求解 4.2.1 函数调用与栈 函数调用与栈 栈在函数调用、递归、语法分析、表达式求值等的实现中都要用到。 在函数调用中,函数调用 -- 返回关系的控制就是通过栈来实现的。 在递归过程中,子程序间的信息传递和控制转移也是通过栈来实现的。 4.2.2 递归与栈 递归是一种重要的程序设计方法。 如果在一个函数、过程或数据结构的定义内部又直接或间接地应用了定义本身,则称它们是递归的。 递归可以分为直接递归和间接递归两种。 例如,在常见的函数递归调用中,直接调用时,在函数内有调用本函数的语句,当执行到这条语句时,程序将会转到本函数的第1行重新开始执行本函数。 间接调用时,在f1函数内,先调用f2函数,在执行f2函数中,又有调用f1的函数。 4.2.2 递归与栈(续1) 一个递归函数的运行类似于多个函数的嵌套调用。 系统设定一个递归工作栈,每进入一层递归调用时,将相应的信息(函数返回值及返回地址)压入栈顶,而每退出一层递归时,栈顶元素就是要返回的地址。 4.2.3 迷宫求解 迷宫求解 所谓迷宫求解就是要在迷宫中寻找一条从出口到入口的路径。 采用的是一种试探性的搜索方法,即从入口出发,沿着某一方向向前搜索,如果有路可走就继续前进,否则沿原路退回一步,重新选择新的方向,再继续搜索。如此重复,直到到达出口或则回退到入口(表明迷宫中无路径)。 为了保证在搜索过程中能沿原路回退,需要用一个先进后出的数据结构---栈,来保存搜索过程中走过的路径。 4.3 队列 队列的定义 队列也是一种运算受限的线性表,它的插入在表的一端,删除在表的另一端。 允许插入的一端叫做队尾,允许删除的一端叫做队头。 队列的结构 设队列:Queue = (a1, a2, ..., an),则a1就是队头元素,an是队尾元素。 队列是一种先进先出(FIFO - First In Fist Out)的线性表。Queue中元素的插入次序为a1, a2, ..., an。Queue中元素的删除次序也为a1, a2, ..., an。 4.3 队列 队列的基本操作 1.?初始化:初始化一个新的空队列。 2.?判空:判别一个队列是否为空。 3. 入队列:将一个新元素插入在队尾。 4. 出队列:删除队头元素,并返回它的值。 5. 取队头元素:取得队头元素的值。 队列的存储 顺序存储结构 链式存储结构 4.3.1 队列的顺序存储结构 采用连续的存储单元来存放队列中的元素,简称为顺序队列。 在C语言中,顺序队列是用一个一维数组来存放的。 设置两个指针,用于指示队头与队尾的位置,称为队头指针和队尾指针。 规定队头指针指向队头元素在一维数组中实际位置的前一个位置。队尾指针指向队尾元素在一维数组中的实际位置。 存储结构定义 : 4.3.1 队列的顺序存储结构(续1) 五种基本操作的实现 4.3.1

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档