网站大量收购独家精品文档,联系QQ:2885784924

数据结构(c语言版)_严蔚敏版_第3章_栈和队列_信大(第3讲).ppt

数据结构(c语言版)_严蔚敏版_第3章_栈和队列_信大(第3讲).ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构(c语言版)_严蔚敏版_第3章_栈和队列_信大(第3讲)

1、什么是线性表 2、线性表的顺序实现,特点? 建立 查找 修改 删除 3、线性表的链式实现,特点? 建立 查找 修改 删除 第三章 栈和队列 3.1 栈 3.2 栈的表示和实现 3.2.1 栈的顺序存储结构 3.2.2 栈的链式存储结构 3.3 栈的应用举例 3.4 队 列 3.5 队列的表示和实现 3.5.1 队列的链式存储结构 3.5.2 队列的顺序存储结构 3.1 栈的逻辑结构 3.1 栈的逻辑结构 栈的定义 栈(Stack)是限制在表的一端进行插入和删除运算的线性表,通常称插入、删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。 假设栈S=(a1,a2,a3,…an),则a1称为栈底元素,an为栈顶元素。栈中元素按a1,a2,a3,…an的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按后进先出的原则进行的。因此,栈称为后进先出表(LIFO)。 3.1 栈的逻辑结构 3.2.1 栈的顺序存储结构及实现 由于栈是运算受限的线性表,因此线性表的存储结构对栈也适应。 顺序存储结构 栈的顺序存储结构简称为顺序栈,它是运算受限的线性表。因此,可用数组来实现顺序栈。因为栈底位置是固定不变的,所以可以将栈底位置设置在数组的两端的任何一个端点;栈顶位置是随着进栈和退栈操作而变化的,故需用一个整型变量top 定义:利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。 链表存储结构 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 入栈 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.1 栈的顺序存储结构及实现 3.2.2 栈的链式存储结构及实现 3.2.2 栈的链式存储结构及实现 3.2.2 栈的链式存储结构及实现 3.2.2 栈的链式存储结构及实现 3.2.3 栈的存储结构的比较 3.3栈的应用举例 3.3.1 数制转换 十进制N和其它进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理: N=(n div d)*d+n mod d ( 其中:div为整除运算,mod为求余运算) 例如 (1348)10=(2504)8,其运算过程如下: 数制转换 程序 3.2.2 括号匹配的检验 假设表达式中充许括号嵌套,则检验括号是否匹配的方法可用“期待的急迫程度”这个概念来描述 3.4 队 列 3.4 队 列 队列的定义 队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。   例如:排队购物。操作系统中的作业排队。先进入队列的成员总是先离开队列。因此队列亦称作先进先出(First In First Out)的线性表,简称FIFO表。   当队列中没有元素时称为空队列。在空队列中依次加入元素a1,a2,…an之后,a1是队头元素,an是队尾元素。显然退出队列的次序也只能是a1,a2,…an ,也就是说队列的修改是依先进先出的原则进行的。 3.5.1队列的链式存储结构及实现 链队列 队列的链式存储结构简称为链队列,它是限制仅在表头删除和表尾插入的单链表。显然仅有单链表的头指针不便于在表尾做插入操作,为此再增加一个尾指针,指向链表的最后一个结点。于是,一个链队列由一个头指针唯一确定。和顺序队列类似,我们也是将这两个指针封装在一起,将链队列的类型LinkQueue定义为一个结构类型: 3.5.1队列的链式存储结构及实现 3.5.1队列的链式存储结构及实现 2、链队列的类型定义 typedef struct Qnode { /*定义队列的结点结构*/ ElemType data; //队列结点数据 struct Qnode *next; //结点链指针 } QNode,*QueuePtr; typedef struct { /*链队列结构*/ QueuePtr front; /*队头指针*/ QueuePtr rear;

文档评论(0)

骨干 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档