安全生产责任制考核评分表[1].ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《安全生产责任制考核评分表[1].ppt》由会员分享,可在线阅读,更多相关《安全生产责任制考核评分表[1].ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、安全生产责任制考核评分表1 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第第3章章 栈和队列栈和队列栈和队列是两种重要的数据结构。栈和队列是两种重要的数据结构。从数据元素的逻辑关系看,栈与队列是线从数据元素的逻辑关系看,栈与队列是线性表,但从操作方式与种类看,它们与线性表,但从操作方式与种类看,它们与线性表有许多不同。性表有许多不同。栈与队列是操作受限的线性表。栈与队列是操作受限的线性表。尽管它们与线性表有许多共同点,但也有尽管它们与线性表有许多共同点,但也有不
2、少特殊性。本章重点介绍这些特殊性,不少特殊性。本章重点介绍这些特殊性,并给出一些典型的应用实例。并给出一些典型的应用实例。11/6/20222第第3章章 栈和队列栈和队列3.1栈栈3.2栈的应用举例栈的应用举例3.4队列队列 3.4.1抽象数据类型队列的定义抽象数据类型队列的定义 3.4.2链队列链队列 队列的链式表示和实现队列的链式表示和实现 3.4.3循环队列循环队列队列的顺序表示和实现队列的顺序表示和实现11/6/202233.1 栈(栈(Stack)3.1.1抽象数据类型栈的定义抽象数据类型栈的定义一、定义一、定义1、栈、栈(Stack)是限定在表尾进行插入或删除操是限定在表尾进行插入
3、或删除操 作的线性表。表尾端称栈顶作的线性表。表尾端称栈顶(top),表头端,表头端 称栈底称栈底(bottom)2、特点:栈的修改是按后进先出、特点:栈的修改是按后进先出(LIFO)的原的原 则进行的。则进行的。11/6/202243.1 栈(栈(Stack)11/6/202253.1 栈(栈(Stack)例:设栈的初始状态为空,容量为例:设栈的初始状态为空,容量为5。若入栈元。若入栈元素的顺序是素的顺序是1、2、3、4、5,则出栈元素的,则出栈元素的顺序不可能是【顺序不可能是【】。】。A.12345 B.34125 C.24351 D.5432111/6/202263.1 栈(栈(Stac
4、k)二、栈的抽象数据类型定义二、栈的抽象数据类型定义ADT Stack 数据对象:数据对象:D ai|ai ElemSet,i=1,2,.,n,n0 数据关系:数据关系:R1|ai-1,aiD,i=2,.,n 约定约定an 端为栈顶,端为栈顶,a1 端为栈底。端为栈底。基本操作:基本操作:InitStack(&S)操作结果:构造一个空栈操作结果:构造一个空栈S。DestroyStack(&S)初始条件:栈初始条件:栈S已存在。已存在。操作结果:栈操作结果:栈S被销毁。被销毁。11/6/202273.1 栈(栈(Stack)ClearStack(&S)初始条件:栈初始条件:栈S已存在。已存在。操
5、作结果:将操作结果:将S清为空栈。清为空栈。StackEmpty(S)初始条件:栈初始条件:栈S已存在。已存在。操作结果:若栈操作结果:若栈S为空栈,则返回为空栈,则返回TRUE,否,否 则则FALSE。StackLength(S)初始条件:栈初始条件:栈S已存在。已存在。操作结果:返回操作结果:返回S的元素个数,即栈的长度。的元素个数,即栈的长度。11/6/202283.1 栈(栈(Stack)GetTop(S,&e)初始条件:栈初始条件:栈S已存在且非空。已存在且非空。操作结果:用操作结果:用e返回返回S的栈顶元素。的栈顶元素。Push(&S,e)初始条件:栈初始条件:栈S已存在。已存在。
6、操作结果:插入元素操作结果:插入元素e为新的栈顶元素。为新的栈顶元素。Pop(&S,&e)初始条件:栈初始条件:栈S已存在且非空。已存在且非空。操作结果:删除操作结果:删除S的栈顶元素,并用的栈顶元素,并用e返回其值。返回其值。ADT Stack11/6/202293.1 栈(栈(Stack)3.1.2栈的表示和实现栈的表示和实现一、顺序栈一、顺序栈1、定义:栈的顺序存储结构是利用一组地址连续的存、定义:栈的顺序存储结构是利用一组地址连续的存 储单元依次存放自栈底到栈顶的数据元素,同时附储单元依次存放自栈底到栈顶的数据元素,同时附 设指针设指针top指示栈顶元素在顺序栈中的位置。指示栈顶元素在
7、顺序栈中的位置。2、初始化空栈时不限定栈的最大容量:先分配一个基初始化空栈时不限定栈的最大容量:先分配一个基 本容量,需要时再逐渐扩大本容量,需要时再逐渐扩大STACK_INIT_SIZE;STACKINCREMENT3、设置栈底指针设置栈底指针base,始终指向栈底。,始终指向栈底。当当baseNULL,栈不存在,栈不存在 当当topbase时,栈空时,栈空11/6/202210toptopbasebasebasebasetoptopbasebasetoptopbasebasetoptopA AA AB BC CD DE EA AB B空栈空栈 A进栈进栈E D C 出栈出栈 B C D E
8、 进栈进栈3.1 栈(栈(Stack)11/6/2022113.1 栈(栈(Stack)二、顺序栈的二、顺序栈的C语言定义语言定义顺序栈的类型定义如下:顺序栈的类型定义如下:#define STACK_INIT_SIZE 100/存储空间初始分配量存储空间初始分配量#define STACKINCREMENT 10;/存储空间分配增量存储空间分配增量 typedef struct SElemType *base;/在构造之前和销毁之后在构造之前和销毁之后base的值是的值是NULL SElemType *top;/栈顶指针栈顶指针 int Stacksize;/栈的当前可使用的最大容量栈的当前
9、可使用的最大容量.SqStack;11/6/2022123.1 栈(栈(Stack)三、顺序栈的应用三、顺序栈的应用1、初始化、初始化 Status InitStack(SqStack&S)/构造一个空栈构造一个空栈S S.base=(SelemType*)malloc(STACK_INIT_SIZE *sizeof(ElemType);if(!S.base)exit(OVERFLOW);/存储分配失败存储分配失败 S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;/InitStack 11/6/2022133.1 栈(栈(Stack)2、读
10、栈顶元素、读栈顶元素Status GetTop(SqStack S,SElemType&e)/若栈不空,则用若栈不空,则用e返回返回S的栈顶元素,并返回的栈顶元素,并返回ok;/否则返回否则返回ERROR if(S.top=S.base)return ERROR;e=*(S.top-1);return OK;/GetTop11/6/2022143.1 栈(栈(Stack)3、插入元素、插入元素Status Push(SqStack&S,SElemType e)/插入元素插入元素e为新的栈顶元素为新的栈顶元素 if(S.top-s.base=S.stacksize)/栈满,追加存储空间栈满,追加
11、存储空间 S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType);if(!S.base)exit(OVERFLOW);S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;*S.top+=e;return OK;/Push11/6/2022153.1 栈(栈(Stack)4、删除、删除Status Pop(SqStack&S,SElemType&e)/若栈不空,则删除若栈不空,则删除S的栈顶元素,用的栈顶元素,用e返回返回 /其值其值,并返回
12、并返回OK;否则返回;否则返回ERROR if(S.top=S.base)return ERROR;e=*-S.top;return OK;/Pop 11/6/2022163.1 栈(栈(Stack)四、链栈四、链栈 栈的链式存储结构栈的链式存储结构称为链栈。它是运算称为链栈。它是运算受限的单链表,是线受限的单链表,是线性链表的特例。插入性链表的特例。插入和删除操作仅限制在和删除操作仅限制在表头位置上进行。表头位置上进行。data next sa an-1a a1 1a an栈顶栈顶栈底栈底11/6/202217第第3章章 栈和队列栈和队列3.1栈栈3.2栈的应用举例栈的应用举例3.4队列队列
13、 3.4.1抽象数据类型队列的定义抽象数据类型队列的定义 3.4.2链队列链队列 队列的链式表示和实现队列的链式表示和实现 3.4.3循环队列循环队列队列的顺序表示和实现队列的顺序表示和实现11/6/2022183.2 栈的应用举例栈的应用举例 由于栈结构具有的后进先出的固有特性,致使栈成由于栈结构具有的后进先出的固有特性,致使栈成为程序设计中的有用工具。为程序设计中的有用工具。3.2.1数制转换数制转换 十进制数十进制数N和其它和其它d进制数的转换是计算机计算进制数的转换是计算机计算的基本问题。的基本问题。11/6/2022193.2 栈的应用举例栈的应用举例 N=(N div d)*d+n
14、 mod d (其中其中:div为整除运算为整除运算,mod为求余运算为求余运算)例如例如(1348)10=(2504)8,其运算过程如下:其运算过程如下:N 1348 168 21 2 N div 8 168 21 2 0 N mod 8 4 0 5 2显示时按从高位到低位的显示时按从高位到低位的顺序输出顺序输出 计算时从低位到高位计算时从低位到高位顺序产生八进制数的各个数位顺序产生八进制数的各个数位11/6/2022203.2 栈的应用举例栈的应用举例void conversion()InitStack(s);/构建空栈构建空栈 scanf(“%d”,N);/输入一个非负十进制整数输入一个
15、非负十进制整数 while(N)/N不等于零,循环不等于零,循环 push(s,N%8);/N/8第一个余数进栈第一个余数进栈 N=N/8;/整除运算整除运算 while(!StackEmpty(s)/输出存放在栈中输出存放在栈中 /的八制数位的八制数位 Pop(s);printf(“%d”,e);/conversion11/6/2022213.2 栈的应用举例栈的应用举例3.2.3 括号匹配的检验括号匹配的检验算法思路:算法思路:1、构建空栈,如左括号则入栈;、构建空栈,如左括号则入栈;2、如右括号,则读栈顶元素。若与其匹配,则出、如右括号,则读栈顶元素。若与其匹配,则出栈;若不匹配,则返回
16、栈;若不匹配,则返回“不匹配不匹配”;3、判定栈是否为空,若栈不空,则返回、判定栈是否为空,若栈不空,则返回“不匹配不匹配”。例例1 ()例例2 ()11/6/2022223.2 栈的应用举例栈的应用举例3.2.3 行编辑程序行编辑程序 一个简单的行编辑程序的功能是:接受用户一个简单的行编辑程序的功能是:接受用户从终端输入的程序或数据,并存入用户的数据区。从终端输入的程序或数据,并存入用户的数据区。允许用户输入出错时可以及时更正。可以约定为允许用户输入出错时可以及时更正。可以约定为退格符,以表示前一个字符无效,退格符,以表示前一个字符无效,为退行符,表为退行符,表示当前行所有字符均无效。示当前
17、行所有字符均无效。例:在终端上用户输入为例:在终端上用户输入为 whli#ilr#e(s#*s)应为应为 while(*s)outchaputchar(*s=#+);putchar(*s+);11/6/2022233.2 栈的应用举例栈的应用举例void lineEdit()/利用字符栈利用字符栈S,从终端接收一行并传送至调用过程的数据区。,从终端接收一行并传送至调用过程的数据区。InitStack(S);ch=getchar();/从终端接收第一个字符从终端接收第一个字符 while(ch!=EOF)/EOF为全文结束符为全文结束符 while(ch!=EOF&ch!=n)switch(ch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 安全生产 责任制 考核 评分
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内