安全生产责任制考核评分表.pptxVIP

  • 7
  • 0
  • 约9.87千字
  • 约 52页
  • 2023-06-17 发布于上海
  • 举报
安全生产责任制考核评分表第1页/共52页 2023/6/142第3章 栈和队列栈和队列是两种重要的数据结构。从数据元素的逻辑关系看,栈与队列是线性表,但从操作方式与种类看,它们与线性表有许多不同。栈与队列是操作受限的线性表。尽管它们与线性表有许多共同点,但也有不少特殊性。本章重点介绍这些特殊性,并给出一些典型的应用实例。第2页/共52页 2023/6/143第3章 栈和队列3.1栈3.2栈的应用举例3.4队列 3.4.1抽象数据类型队列的定义 3.4.2链队列- 队列的链式表示和实现 3.4.3循环队列-队列的顺序表示和实现第3页/共52页 2023/6/1443.1 栈(Stack)3.1.1抽象数据类型栈的定义一、定义1、栈( Stack )是限定在表尾进行插入或删除操 作的线性表。表尾端称栈顶(top) ,表头端 称栈底(bottom)2、特点:栈的修改是按后进先出(LIFO)的原 则进行的。第4页/共52页 2023/6/1453.1 栈(Stack)第5页/共52页 2023/6/1463.1 栈(Stack)例:设栈的初始状态为空,容量为5。若入栈元素的顺序是1、2、3、4、5,则出栈元素的顺序不可能是【 】。 A. 12345 B. 34125 C. 24351 D. 54321第6页/共52页 2023/6/1473.1 栈(Stack)二、栈的抽象数据类型定义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 端为栈底。 基本操作: InitStack(S) 操作结果:构造一个空栈S。 DestroyStack(S) 初始条件:栈S已存在。 操作结果:栈S被销毁。第7页/共52页 2023/6/1483.1 栈(Stack) ClearStack(S) 初始条件:栈S已存在。 操作结果:将S清为空栈。 StackEmpty(S) 初始条件:栈S已存在。 操作结果:若栈S为空栈,则返回TRUE,否 则FALSE。 StackLength(S) 初始条件:栈S已存在。 操作结果:返回S的元素个数,即栈的长度。第8页/共52页 2023/6/1493.1 栈(Stack) GetTop(S, e) 初始条件:栈S已存在且非空。 操作结果:用e返回S的栈顶元素。 Push(S, e) 初始条件:栈S已存在。 操作结果:插入元素e为新的栈顶元素。 Pop(S, e) 初始条件:栈S已存在且非空。 操作结果:删除S的栈顶元素,并用e返回其值。 } ADT Stack第9页/共52页 2023/6/14103.1 栈(Stack)3.1.2栈的表示和实现一、顺序栈1、定义:栈的顺序存储结构是利用一组地址连续的存 储单元依次存放自栈底到栈顶的数据元素,同时附 设指针top指示栈顶元素在顺序栈中的位置。2、初始化空栈时不限定栈的最大容量:先分配一个基 本容量,需要时再逐渐扩大  STACK_INIT_SIZE; STACKINCREMENT3、 设置栈底指针base,始终指向栈底。  当base=NULL,栈不存在  当top=base时,栈空第10页/共52页 2023/6/1411topbasebasetopbasetopbasetopAABCDEAB空栈 A进栈E D C 出栈 B C D E 进栈3.1 栈(Stack)第11页/共52页 2023/6/14123.1 栈(Stack)二、顺序栈的C语言定义顺序栈的类型定义如下:#define STACK_INIT_SIZE 100 //存储空间初始分配量#define STACKINCREMENT 10; //存储空间分配增量 typedef struct{ SElemType *base;//在构造之前和销毁之后base的值是NULL SElemType *top; //栈顶指针 int Stacksize; //栈的当前可使用的最大容量.}SqStack;第12页/共52页 2023/6/14133.1 栈(Stack)三、顺序栈的应用1、

文档评论(0)

1亿VIP精品文档

相关文档