《数据结构》课程教学资源:第四章 栈和队列

答是要 4.1 °顺序找 °链式栈 °找的应用 4.2栈和递归的实现 °基本概念 基本问题 4.3队列 饭序队列 °链式队列 °从列的应用 4.4栈和队列的应用范例
内容提要 4.1 栈 • 顺序栈 • 链式栈 • 栈的应用 4.2 栈和递归的实现 • 基本概念 • 基本问题 4.3 队列 • 顺序队列 • 链式队列 • 队列的应用 4.4 栈和队列的应用范例

41传 1、定义 栈( Stack):一种后进先出(L|FO的线性表 向栈中插入和删除元素,必须在栈的 端进行。因此,栈是操作受限的! 栈顶top):元许插入和删除的一端 栈底( bottom:不允许插入和删除的一端 栈的主要操作: 建立空栈 进线 出栈 判断栈是否空 判断栈是否满获取栈顶元素值
4.1 栈 1、定义 栈(Stack):一种后进先出(LIFO)的线性表。 栈顶(top):允许插入和删除的一端 栈底(bottom):不允许插入和删除的一端 栈的主要操作: 建立空栈 进栈 出栈 判断栈是否空 判断栈是否满 获取栈顶元素值 向栈中插入和删 除元素,必须在栈的一 端进行。因此,栈是操作受限的!

出栈 进栈 栈的修改是按后进先出 栈顶 an Last In First Out,简称 a2 a1 L|FO的原则进行的 栈的示意图
栈(cont’d) a1 a2 … an 出栈 进栈 栈顶 栈的示意图 栈的修改是按后进先出 (Last In First Out,简称 LIFO)的原则进行的

传之顺序线 2、版序:用版序表实现的线 (1)顺序的数据类型定义: #define maXsize 50 typedef struct elemtype elem MAXSIE: int top /*栈顶*/ JSQSTACK
栈之顺序栈 2、顺序栈:用顺序表实现的栈 (1) 顺序栈的数据类型定义: #define MAXSIZE 50 typedef struct { elemtype elem[MAXSIZE]; int top; /*栈顶*/ }SQSTACK;

之顺序c( (2)顺序线的基本操作(建线: 建立空栈 void initstack(SQSTACK *s s→>top=-1;/*-1表示空栈*
栈之顺序栈(cont’d) (2) 顺序栈的基本操作(建栈): void initstack(SQSTACK *s) { s→top= -1; /*-1表示空栈*/ } • 建立空栈

之顺序( (3)顺序线的基本操作(判的 判断栈是否空 int stackempty(sQsTACK S return s top==-1;
栈之顺序栈(cont’d) (3) 顺序栈的基本操作(判断): int stackempty(SQSTACK s) { return s.top == -1; } • 判断栈是否空

之顺序c( (4)顺序找的基本操作入线: 入栈 int push( SQSTACK“s, elemtype e) f(s→)top= MAXSIZE-1) return0;体栈满,入栈失败* S→>top++; s→>lem|s→>topl=e; return 1
栈之顺序栈(cont’d) (4) 顺序栈的基本操作(入栈): int push(SQSTACK *s, elemtype e) { if(s→top==MAXSIZE-1) return 0; /*栈满,入栈失败*/ s→top++; s→elem[s→top]=e; return 1; } • 入栈

之顺序c( 5)顺序线的基本操出线: 出栈 int pop(sQsTACK *s, elemtype if(s→>top=1) return0;*栈空,出栈失败* e=s→> elems→)topl; →)top-; eturn 1
栈之顺序栈(cont’d) (5) 顺序栈的基本操作(出栈): int pop(SQSTACK *s, elemtype *e) { if(s→top==-1) return 0; /*栈空,出栈失败*/ *e=s→elem[s→top]; s→top--; return 1; } • 出栈

之顺序c( (6)顺序线的基本操作获取 获取栈顶值 int gettop(SQSTACK S, elemtype *e) if(s-top==-Dreturn 0; e=s→> elem s→>topl;
栈之顺序栈(cont’d) (6) 顺序栈的基本操作(获取): int gettop(SQSTACK s,elemtype *e) { if(s→top==-1)return 0; *e=s→elem[s→top]; } • 获取栈顶值

传之链式线 3、链式:用链表实现的线 (1)链式线的数据类型定义(与链表相同): typedef struct node elemtype data struct node *next: JNODE, NODEPTR, * LKSTACK; #define len sizeof(Node
栈之链式栈 3、链式栈:用链表实现的栈 (1) 链式栈的数据类型定义(与链表相同): typedef struct node { elemtype data; struct node *next; }NODE ,*NODEPTR, *LKSTACK; #define LEN sizeof(NODE)
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据结构》课程教学资源:第三章 线性表.ppt
- 《数据结构》课程教学资源:第二章 数组.ppt
- 《数据结构》课程教学资源:第一章 绪论.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第一讲 matlab 简介.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第五讲 matlab句柄绘图.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第四讲 matlab 绘图.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第三讲 matlab 的符号运算.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第七讲 matlab的程序设计.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第六讲 matlab工具箱.ppt
- 电子信息与控制工程学院:《MATLAB语言基础》第二讲 matlab 的数值计算.ppt
- 《操作系统》课程教学资源(PPT课件)第一章 操作系统引论.ppt
- 《操作系统》课程教学资源(PPT课件)第二章 进程管理.ppt
- 《操作系统》课程教学资源(PPT课件)第三章 处理机调度与死锁.ppt
- 《操作系统》课程教学资源(PPT课件)第四章 存储器管理.ppt
- 《电子商务基础与应》(第四版) 第十二章 电子商务安全管理.ppt
- 中国科技大学:《C语言程序设计》第四章 数组.ppt
- 中国科技大学:《C语言程序设计》第九章 文件.ppt
- 中国科技大学:《C语言程序设计》第三章 语句与控制流.ppt
- 中国科技大学:《C语言程序设计》第3章 C语言的基本语句和程序结构设计.ppt
- 中国科技大学:《C语言程序设计》第十章 位运算.ppt
- 《数据结构》课程教学资源:第五章 串.ppt
- 《数据结构》课程教学资源:第六章 树和二叉树.ppt
- 《数据结构》课程教学资源:第七章 排序.ppt
- 《数据结构》课程教学资源:第七章 排序.ppt
- 《数据结构》课程教学资源:第八章 查找.ppt
- 《数据结构》课程教学资源:研究的内容.ppt
- 《Linux 实用教程》Linux下的shel1与make.doc
- 《Linux 实用教程》第1章 Linux概况及安装.ppt
- 《Linux 实用教程》第2章 Linux的常用命令.ppt
- 《Linux 实用教程》第3章 Linux系统管理.ppt
- 《Linux 实用教程》第4章 Linux网络基础.ppt
- 《Linux 实用教程》第5章 Intranet服务器.ppt
- 《Linux 实用教程》第6章 Internet应用服务器的配置.ppt
- 《Linux 实用教程》第7章 Web应用服务.ppt
- 《Linux 实用教程》第8章 Linux网络安全.ppt
- 《Linux 实用教程》第9章 Linux编程基础.ppt
- 《Linux 实用教程》DeviceAndModule.ppt
- 《Linux 实用教程》Linux存储管理.ppt
- 《Linux 实用教程》Linux内核结构与进程管理.ppt
- 《Linux 实用教程》Linux文件管理.ppt