数据结构第三章 堆栈和队列.docVIP

  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文档。上传文档
查看更多
第三章 堆栈和队列 3.1 栈 3.1.1 栈的定义及基本运算 栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只有其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。 栈的定义   栈(Stack):是限制仅在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端称为栈底(Bottom)。   栈的修改是按后进后出的原则进行的。因此,栈又称为后进先出(Last In First Out)的线性表,简称为 LIFO表。 栈的基本运算   InitStack(S) 构造一个空栈S。   StackEmpty(S) 判栈空。若S为空栈,则返回TRUE,否则返回FALSE。   StackFull(S) 判栈满。若S为满栈,则返回TRUE,否则返回FALSE。该运算只适用于栈的顺序存储结构。   Push(S,x) 进栈。若栈S不满,则将元素x插入S的栈顶。   Pop(S) 退栈。若栈S非空,则将S的栈顶元素删去,并返回该元素。   StackTop(S) 取栈顶元素。若栈S非空,则返回栈顶元素,但不改变栈的状态。基本概念顺序栈:即栈的顺序存储结构,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。   栈顶指针和栈中元素之间的关系基本算法   在顺序栈上实现栈的六种基本运算,具体算法如下:   置空栈       判栈空       判栈满       进栈       退栈       取栈顶元素     链栈:栈的链式存储结构称为链栈。  链栈是运算受限的单链表,它的插入和删除被限制在表头位置上进行。栈顶指针就是链表的头指针,它唯一确定一个链栈。 链栈上实现的基本运算:   置空栈       判栈空       进栈       退栈       取栈顶元素     队列的定义   队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(Front),允许插入的一端称为队尾(Rear)。   队列的修改是按先进先出的原则进行的。因此,队列又称为先进先出(First In First Out)的线性表,简称为FIFO表。 队列的基本运算   InitQueue(Q) 置空队。构造一个空队列Q。   QueueEmpty(Q) 判队空。若队列Q为空,则返回真值,否则返回假值。   QueueFull(Q) 判队满。若队列Q为满,则返回真值,否则返回假值。此操作只适用于队列的顺序存储结构。   EnQueue(Q,x) 若队列Q非满,则将元素x插入Q的队尾。此操作简称入队。   DeQueue(Q) 若队列Q非空,则删去Q的队头元素,并返回该元素。此操作简称出队。   QueueFront(Q) 若队列Q非空,则返回队头元素,但不改变队列Q的状态。基本概念 队列的顺序存储结构称为顺序队列,顺序队列用一个向量空间来存放当前队列中的元素。 由于队列的队头和队尾的位置是变化的,因而要设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应置为0。   顺序队列操作为充分利用向量空间,克服假上溢现象的方法是将向量空间想像为一个首尾相接的圆环,并称这种向量为循环向量,存储在其中的队列称为循环队列(Circular Queue)。   循环队列入、出队操作 实现循环队列上的六种基本运算      置空队       判队空       判队满       入队       出队       取队头元素     基本概念 队列的链式存储结构称为链队列,它是限制仅在表头删除和表尾插入的单链表。 一个链队列由一个头指针和一个尾指针唯一地确定。 实现链队列上的六种基本运算      置空队       判队空       入队       出队       取队头元素     栈与队列的比较 栈与递归   递归:若在一个函数、过程或者数据结构定义的内部又直接(或间接)出现有定义本身的应用。   直接递归:在定义一个过程或函数时又出现了调用本过程或者函数的成分,即调用它自己本身。 例如:   间接递归:若过程或函数p调用过程或函数q,而q又调用p。 例如:用递归调用编写计算阶乘n!的函数 f( ) 用递归调用编写计算阶乘n!的函数f():   递归模型反映一个递归问题的递归结构:     f(0)=1        递归终止条件     f(n)=n*f(n-1) (n0) 递归体 克里特岛迷宫克里特岛迷宫:   克里特岛迷宫的故事大家都听说过,讲的是有一个英雄要去杀死一只叫做米诺斯牛的怪兽,而这只米诺斯牛藏在一个迷宫里,迷宫里道路错综复杂,英雄怎样才能找到米诺斯牛呢,他

文档评论(0)

yan666888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档