ImageVerifierCode 换一换
格式:PPT , 页数:21 ,大小:374KB ,
资源ID:3334870      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-3334870.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构第五讲.ppt)为本站会员(dreamzhangning)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

数据结构第五讲.ppt

1、数据结构 第五讲,桂林电子科技大学信息科技学院赵莹莹,数据结构,第三章栈和队列,第3章 栈 和 队 列,内容提要:1,本章主要介绍了栈与队列两种数据结构以及他们的顺序存储与链式存储方式,并在此基础上介绍了一些基于栈与队列的应用。2,关于递归程序的设计。,本章要点,3.1 栈3.1.1 栈的定义及运算 3.1.2 栈的顺序存储结构及基本运算的实现3.1.3 栈的链式存储结构及基本运算的实现 3.2 栈的应用3.2.1 中缀表达式3.2.2 中缀表达式转换为等价的后缀表达式3.2.3 后缀表达式及求值 3.3 栈与递归3.3.1 递归与递归程序的设计3.3.2 递归程序的执行过程3.3.3 递归的

2、应用举例 3.4 队 列3.4.1 队列的定义和运算3.4.2 队列的顺序存储结构及基本运算的实现3.4.3 队列的链式存储结构及基本运算的实现 3.4.4 队列的应用举例 本章小结,3.1.1 栈的定义,栈是限制在表的一端进行插入和删除的线性表。栈的相关术语:栈顶、栈底、空栈、进栈(压栈)、出栈等。栈顶(top):允许插入和删除的一端栈底(bottom):不允许插入和删除的一端,进栈的顺序是e1、e2。 出栈的顺序为e2、e1。 所以栈又称为后进先出线性表(Last In First Out),简称 LIFO表或称先进后出线性表。,Top1,Top0,Top1,Top0,Top1,课堂练习,

3、若进栈序列为3,5,7,9,进栈过程中可以出栈,则不可能的一个出栈次序是( )。(a) 7,5,3,9(b) 9,7,5,3(c) 7,5,9,3(d) 9,5,7,3,3.1.1 栈的运算,(1)初始化栈 InitStack(S)初始条件:栈S不存在。操作结果:构造一个空栈S。 (2)压栈(入栈) Push(S, e)初始条件:栈S已存在。操作结果:插入元素e为新的栈顶元素。 (3)出栈Pop(S, e)初始条件:栈S已存在且非空。操作结果:删除S的栈顶元素,并用e返回其值。 (4) GetTop(S, &e)初始条件:栈S已存在且非空。操作结果:用e返回S的栈顶元素。 (5)StackEm

4、pty(S)初始条件:栈S已存在。操作结果:若栈S为空栈,则返回TRUE(1),否则FALSE(0)。,课堂练习,用一维数组设计栈,初态是栈空,top=-1。现有输入序列是 a、b、c、d,经过 push、push、pop、push、pop、push操作后。 输出序列是( ) 栈顶指针是( ),b,c,1,本章要点,3.1 栈3.1.1 栈的定义及运算 3.1.2 栈的顺序存储结构及基本运算的实现3.1.3 栈的链式存储结构及基本运算的实现 3.2 栈的应用3.2.1 中缀表达式3.2.2 中缀表达式转换为等价的后缀表达式3.2.3 后缀表达式及求值 3.3 栈与递归3.3.1 递归与递归程序

5、的设计3.3.2 递归程序的执行过程3.3.3 递归的应用举例 3.4 队 列3.4.1 队列的定义和运算3.4.2 队列的顺序存储结构及基本运算的实现3.4.3 队列的链式存储结构及基本运算的实现 3.4.4 队列的应用举例 本章小结,3.1.2 顺序栈的结构及运算(1),栈的顺序存储简称顺序栈。通常由一个一维数组dataMAXSIZE和一个记录栈顶元素位置的变量(top)组成说明:top指向栈顶元素当前位置。,0,1,2,MAXSIZE-1,0,1,2,MAXSIZE-1,本章要点,4.1 栈4.1.1 栈的抽象数据类型 4.1.2 顺序栈4.1.3 链栈4.1.4 栈的应用 4.2 队

6、列4.2.1 队列的抽象数据类型4.2.2 顺序队列4.2.3 链队列 4.2.4 队列的应用 4.3 递 归4.3.1 递归算法书写要点及方法4.3.2 递归过程的调用和返回4.3.3 递归的应用 4.3.4 递归函数的非递归化 本章小结,栈的顺序存储示意图:说明:也可以将base指向下标为-1的位置,top指向栈顶元素当前位置。,4.1.2 顺序栈(1),0,1,2,MAXSIZE-1,#define MAXSIZE 100 typedef structElemType dataMAXSIZE;int top; Stack;,顺序栈的描述,1) 栈的初始化InitStack(Stack *

7、S)void InitStack(Stack *S)s-top=-1;,顺序栈的运算(1),0,1,2,MAXSIZE-1,Top1,2) 压栈(入栈)操作int PushStack(Stack *S,ElemType e) /进栈操作 if(S-top=MAXSIZE-1)prinft(“n Stack is full”);return 0;s-top+;s-datas-top=e;return 1; ,顺序栈的运算(2),0,1,2,MAXSIZE-1,Top1,e,Top2,3) 判断栈是否为空int EmptyStack() /判断栈是否为空 if (S-top=-1)return 1

8、;elsereturn 0;,顺序栈的运算(3),0,1,2,MAXSIZE-1,Top1,2)出栈操作int PopStack(Stack *S,ElemType *e) / if(Empty(S) prinft(“n Stack is empty”);return 0;*e=S-datas-top;s-top-;return 1; ,顺序栈的运算(4),0,1,2,MAXSIZE-1,Top1,5) 取栈顶元素操作int GetTop (Stack *S,ElemType *x) /取栈顶元素操作 if(Empty(S)printf(“Stack is Empty”);return 0;e

9、lse*x=S-dataS-top;return 1;,顺序栈的运算(5),0,1,2,MAXSIZE-1,Top1,栈的应用举例,例一、 数制转换:编写程序实现对于一个任意的十进制数打印输出与之等值的八进制数。十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于“除d求余”原理。 例如:(1348)10 = ( ? )8 N N div 8 N mod 81348 168 4168 21 021 2 52 0 2,2504,void conversion () / 对于输入的任意一个非负十进制整数,打印输出/ 与其等值的八进制数InitStack(S); / 构造空栈scanf (“%d“,N);while (N) Push(S, N % 8);N = N/8;while (!StackEmpty(S) Pop(S,e);printf ( “%d“, e ); / conversion,本节小结,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报