数据结构--栈和队列 ppt课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ppt课件
7
2 、说明:设(a1, a2, a3, …, an ) 是一个栈
1)表尾称为栈顶,表头称为栈底 ,即a1为栈底元素,an为栈顶元素;
2)在表尾插入元素的 操作称进栈操作,在表头删除元素的操作称为 出栈操作;
3)元素按a1, a2, a3, …, an 的次序进栈, 第一个进栈的元素一定在 栈底,最后一个进栈的元素一定在栈顶, 第一个出栈的元素为栈顶元素;
#define STACKINCREMENT 10// 栈存储空间的分配增量 typedef struct{ SElemType *base;//栈空间基址称为栈底指针,指向栈底位置 SElemType *top //栈顶指针,约定栈顶指针指向栈顶元素的
ppt课件
6
第三章 栈和队列
3.1 栈
一、抽象数据类型栈的定义
1 、栈(stack) :是一种特殊的线性表(数 据元素之间的关系是线性关系),其插入、 删除只能在表的一端进行,另一端固定不动。
栈顶(top ) :插入、删除的一端; 栈底(bottom ) :固定不动的一端; 入栈(push ) :又称压入,即插入一个元素; 出栈(pop) :又称弹出,即删除一个元素;
ppt课件
17
特点:简单、方便,但易产生溢出。 上溢(Overflow ) 栈已经满,又要压入元素; 下溢(Underflow ) 栈已经空,还要弹出元素;
注:上溢是一种错误,使问题的处理无法进行下去; 而下溢一般认为是一种结束条件,即问题处理结束。
ppt课件
18
顺序栈的存储表示
#define STACK_INIT_SIZE 100//栈存储空间的初始分配量
ppt课件
12
4、栈的ADT描述
栈的抽象数据类型定义为:
ADT Stack { 数据对象:D={ai|ai∈ElemSet, i=1,2,...,n, n≥0 }
数据关系:R1={ < ai-1, ai >| ai-1 , ai ∈D,
i=2,...,n }
约定an端为栈顶,a1端为栈底。 基本操作:
ppt课件
3
1. 你见过餐馆中一叠一叠的盘子吗?如果它 们是按1,2,…,n 的次序往上叠的,那么使用时候 的次序应是什么样的?
2. 在日常生活中,为了维持正常的社会秩序 而出现的常见现象是什么?
ppt课件
4
栈和队列是在程序设计中被广泛使用的两种线性 数据结构.
栈必须按“后进先出”的规则进行操作,而队列必 须按“先进先出”的规则进行操作。
16
top=0
top 5 top 4 top 3 top 2 top
1 top
0 栈空
栈满 top
F5
top
E4
top
D3
C2
B1
A0 进栈
F5 E4 D3 C2 B1 A0 出栈
设数组维数为stacksize top=0,栈空,此时出栈,则下溢(underflow) top= stacksize,栈满,此时入栈,则上溢(overflow)
ppt课件
15
顺序栈类型的定义
// 结构定义:
实际是栈中元素的 个数
typedef struct {
ElemType *base; // 存储空间基址
int top;
// 栈顶指针
int stacksize; // 允许的最大存储空间
} Stack;
栈顶指针总是指在栈顶 元素的后面一个位置上
ppt课件
5)取长度操作StackLength(S)
功能:返回栈S的元素ppt课个件 数
11
6)取栈顶元素操作GetTop(S, &e) 功能:取栈顶元素,并用e 返回;
7)进栈操作Push(&S, e) 功能:元素e进栈;
8)退栈操作Pop(&S, &e) 功能:栈顶元素退栈,并用e返回;
7)栈遍历StackTraverse(S) 功能:从栈底到栈顶依次调用函数visit().
ppt课件
10
3 、 栈的基本操作
1) 初始化操作InitStack(&S)
功能:构造一个空栈S;
2) 销毁栈操作DestroyStack(&S)
功能:销毁一个已存在的栈;
3) 置空栈操作ClearStack(&S)
功能:将栈S置为空栈;
4)判空栈操作StackEmpty(S)
功能:若栈为空栈,返回TRUE,否则FALSE
的特点(Last In First out-LIFO First In Last
out ---FILO )
ppt课件
9
课堂练习
假设有A , B , C , D 四个元素;它们入栈次 序为A一> B 一>C 一>D 出栈次序任意, 请问不可能得到下面哪些出栈序列?
(1)ABCD (2)DBCA (3)CDBA ( 4 ) C B A D (5 ) A C B D ( 6 ) D B A C (7)ADCB (8)CABD
和线性表相比,它们的插入和删除操作受更多的 约束和限定,故又称为限定性的线性表结构。
Baidu Nhomakorabea
ppt课件
5
插入 线性表: Insert(L,i,x)
(1≤i≤n+1)
删除 Delete(L,i) (1≤i≤n)
栈: Insert(L,n+1,x) Delete(L,n)
队列: Insert(L,n+1,x) Delete(L,1)
ppt课件
1
第三章 栈和队列
本章学习两种特殊的线性数据结构,它们特殊 在定义的操作不同,即插入和删除操作只能在线 性表的两端进行。
只能在一端进行的----- 栈 分别在两端进行的----- 队列
ppt课件
2
• 重点
本章的学习重点在于掌握这两种结构的特点,以 便能在应用问题中正确使用。
• 知识点
顺序栈、链栈、循环队列、链队列
…….
} ADT Stack
ppt课件
13
二 栈的存储表示和操作的实现
和线性表类似,栈也有两种存储表示,其顺 序存储结构简称为顺序栈。
和顺序表类似,对顺序栈也需要事先为它分 配一个可以容纳最多元素的存储空间。
ppt课件
14
顺序存储方式:同一般线性表的顺序存储结构 完全相同。是利用一组连续的内存单元依次存放 自栈底到栈顶的数据元素,栈顶元素的位置由一 个称为栈顶指针的变量指示 。
栈
栈
底
顶
(a1, a2, ... , ai -1, ai , ai+1, …, an )
ppt课件 出栈
进栈
8
栈的第栈示一底意个,图进最栈后的一元个素进在栈
的元素在栈顶,第一 个出栈的元素为栈顶 元素,最后一个出栈 的元素为栈底元素
栈特点:由于限制了插入删除只能在一端进行,那
么元素的操作顺序有“先进后出”或“后进先出”