数据结构第三章栈和队列ppt课件.ppt
《数据结构第三章栈和队列ppt课件.ppt》由会员分享,可在线阅读,更多相关《数据结构第三章栈和队列ppt课件.ppt(80页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章栈和队列栈和队列为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能n教学目的教学目的n通过本章的学习,要求掌握栈和队列的定义,通过本章的学习,要求掌握栈和队列的定义,熟练掌握顺序和链接存储的栈和队列的算法设熟练掌握顺序和链接存储的栈和队列的算法设计及其程序实现,了解栈和队的各种应用。计及其程序实现,了解栈和队的各种应用。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能n本章主要介绍以下内容:本章主要介绍以下内容:l栈的概念、存储结构及其基本操作栈的概念、存储结构
2、及其基本操作l队列的概念、存储结构及其基本操作队列的概念、存储结构及其基本操作l栈与队列的应用举例栈与队列的应用举例为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能n重点:栈和队列的定义、特征;顺序栈、链栈重点:栈和队列的定义、特征;顺序栈、链栈的描述及基本操作实现算法;循环队列和链队的描述及基本操作实现算法;循环队列和链队列的基本操作实现算法。列的基本操作实现算法。n难点:栈满、栈空的条件及描述方法;队满和难点:栈满、栈空的条件及描述方法;队满和队空的描述方法;循环队列上的插入、删除操队空的描述方法;循环队列上的插入、删除操作。作
3、。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能栈(stack)n栈的定义n栈的类型定义n栈的存储方式为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能栈的定义n栈是一种特殊的线性表。其特殊性在于限定插栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在入和删除数据元素的操作只能在线性表的一端线性表的一端进行。进行。a1ana2栈的示意图栈顶栈底进栈出栈进行插入和删除的进行插入和删除的一端是浮动端,被一端是浮动端,被称为栈顶称为栈顶固定端一端被固定端一端被
4、称为栈底称为栈底为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能假设栈假设栈S=(a1,a2,a3,an),则,则a1称为栈底称为栈底元素,元素,an为栈顶元素。栈中元素按为栈顶元素。栈中元素按a1,a2,a3,an的次序进栈,退栈的第一个元素应为栈的次序进栈,退栈的第一个元素应为栈顶元素。顶元素。换句话说,栈的修改是按后进先出的原则进行换句话说,栈的修改是按后进先出的原则进行的。的。因此,栈称为后进先出表(因此,栈称为后进先出表(LIFO)LastInFirstOut。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯
5、彻全国教育大会精神,充分发挥中小学图书室育人功能栈的类型定义ADTStack 数据对象数据对象:D=ai|ai ElemSeti=1,2,.,nn0数据关系数据关系:R1=|ai,ai+1 ElemSet,i=1,2,.,n-10约定约定an端为栈顶,端为栈顶,a1端为栈底端为栈底为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能基本操作基本操作:结构初始化结构初始化InitStack(&S)操作结果:构造一个空栈操作结果:构造一个空栈S销毁结构销毁结构DetroyStack(&S)初始条件:栈初始条件:栈S已经存在已经存在操作结果:
6、销毁栈操作结果:销毁栈S为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能引用型操作引用型操作StackEmpty(S)/判断判断S是否为空栈,若为空返回是否为空栈,若为空返回True,否则返回,否则返回FalseStackLength(S)/得到栈得到栈S的元素个数,即栈的长度的元素个数,即栈的长度GetTop(S,&e)/得到得到S的栈顶元素,并将之放入变量的栈顶元素,并将之放入变量e中中StackTraverse(S,visit()/从栈底到栈顶遍历栈从栈底到栈顶遍历栈S,对每个元素调用,对每个元素调用visit()为深入学习习
7、近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能加工型操作加工型操作ClearStack(&S)/清空栈清空栈SPush(&S,e)/向栈中插入元素向栈中插入元素e为新的栈顶元素为新的栈顶元素Pop(&S,&e)/删除栈删除栈S的栈顶元素,并用的栈顶元素,并用e返回值返回值为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能栈的存储方法栈的存储方法n栈有两种存储表示方法栈有两种存储表示方法:顺序存储和链式存储顺序存储和链式存储 由于栈是运算受限的线性表,因此线性表由于栈是运算受限的线性表
8、,因此线性表的存储结构对栈也适应。的存储结构对栈也适应。栈的顺序存储结构简称为栈的顺序存储结构简称为顺序栈顺序栈,它是运,它是运算受限的线性表。因此,可用数组来实现顺序算受限的线性表。因此,可用数组来实现顺序栈。栈。通常由一个一维数组和一个记录栈顶元素通常由一个一维数组和一个记录栈顶元素位置的变量组成。位置的变量组成。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能当当栈栈中中没没有有数数据据元元素素时时,表表示示为为栈栈空空。栈栈顶顶元元素素所所对对应应的的下下标标值值top=-1。在刚才基础上执行在刚才基础上执行Push(S,A
9、)后得到这种状态后得到这种状态又又有有三三个个元元素素B、C、D先先后后入入栈栈,此此时时栈栈顶顶元元素素的的下下标标值值top=3。栈已满。栈已满。在刚才状态下,执行两次在刚才状态下,执行两次Pop(S,x)运算后得到运算后得到Top-1D01230123Top-A0123Top-ABC0123Top-AB为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能顺序存储结构n n顺序栈的顺序栈的顺序栈的顺序栈的C#C#语言描述如下:语言描述如下:语言描述如下:语言描述如下:publicclassSeqStackpublicclassSeq
10、StackprivateintmaxSize;/privateintmaxSize;/顺序栈的容量顺序栈的容量顺序栈的容量顺序栈的容量privatechardata;/privatechardata;/数组,用于存储顺序栈的数据元素,这里存数组,用于存储顺序栈的数据元素,这里存数组,用于存储顺序栈的数据元素,这里存数组,用于存储顺序栈的数据元素,这里存储的只有字符型储的只有字符型储的只有字符型储的只有字符型privateinttop;/privateinttop;/指示顺序栈的栈顶指示顺序栈的栈顶指示顺序栈的栈顶指示顺序栈的栈顶n nmaxSizemaxSize为栈中元素的最大容量。为栈中元素
11、的最大容量。为栈中元素的最大容量。为栈中元素的最大容量。n ndatadata域域域域:为一个一维数组,用于存储栈中元素。为一个一维数组,用于存储栈中元素。为一个一维数组,用于存储栈中元素。为一个一维数组,用于存储栈中元素。n ntoptop域域域域:栈顶指针。取值范围为栈顶指针。取值范围为栈顶指针。取值范围为栈顶指针。取值范围为0 0MaxSize-1MaxSize-1。n ntop=-1top=-1表示栈空,表示栈空,表示栈空,表示栈空,top=MaxSize-1top=MaxSize-1表示栈满。表示栈满。表示栈满。表示栈满。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯
12、彻全国教育大会精神,充分发挥中小学图书室育人功能类的实现类的实现publicclassSeqStackprivateintmaxSize;/顺序栈的容量顺序栈的容量privatechardata;/数组,用于存储顺序栈的数据元素,这数组,用于存储顺序栈的数据元素,这里存储的只有字符型里存储的只有字符型privateinttop;/指示顺序栈的栈顶指示顺序栈的栈顶publicintMaxSize/最大容量属性最大容量属性getreturnmaxSize;setmaxSize=value;publicintTop/栈顶属性栈顶属性getreturntop;为深入学习习近平新时代中国特色社会主义思想
13、和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能 使用使用SeqList s=new SeqList()SeqList s=new SeqList()生成一个生成一个SeqListSeqList类的对象实例类的对象实例n栈底元素为栈底元素为n栈顶指针为栈顶指针为n进栈时需将进栈时需将s.tops.top加加1 1,退栈时需将,退栈时需将s.top s.top 减减1 1ns.top0s.top0表示空栈,表示空栈,s.top=MaxSize-1 s.top=MaxSize-1表示栈表示栈满满s.data0s.top为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,
14、贯彻全国教育大会精神,充分发挥中小学图书室育人功能基本操作1.初始化栈初始化栈S/构造函数构造函数publicSeqStack(intsize)data=newcharsize;maxSize=size;top=-1;2.求栈的长度求栈的长度publicintGetLength()returntop+1;3.清空顺序栈清空顺序栈publicvoidClear()top=-1;为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能4、判栈空、判栈空publicboolIsEmpty()if(top=-1)returntrue;elseret
15、urnfalse;5、入栈、入栈publicvoidPush(charitem)if(top=maxSize-1)/若栈已满,则不能再做入栈操作若栈已满,则不能再做入栈操作Console.WriteLine(TheStackisfull!);return;top+;datatop=item;为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能6、出栈出栈publiccharPop()if(IsEmpty()/若栈为空栈,无法做出栈操作若栈为空栈,无法做出栈操作Console.WriteLine(TheStackisempty!);ret
16、urn;charitem=datatop;top-;returnitem;为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能7、取栈顶元素、取栈顶元素publiccharGetTop()if(IsEmpty()Console.WriteLine(TheStackisemptye!);return;returndatatop;为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能链式存储结构链式存储结构n栈的链式存储结构称为栈的链式存储结构称为链栈链栈,它是运算是受限的单链,它是运
17、算是受限的单链表,可插入和删除操作仅限制在表头位置上进行表,可插入和删除操作仅限制在表头位置上进行.链栈的类型说明如下:链栈的类型说明如下:publicclasspublicclassStackNodeStackNodeprivateintdata;/privateintdata;/数据域数据域数据域数据域privateprivateStackNodeStackNodenext;/next;/指针域指针域指针域指针域为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能链栈的几种状态链栈的几种状态为深入学习习近平新时代中国特色社会主义思想
18、和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能栈的应用举例栈的应用举例n由于栈结构具有的后进先出的固有特性,致使由于栈结构具有的后进先出的固有特性,致使栈成为程序设计中常用的工具。栈成为程序设计中常用的工具。n数值转换数值转换n括号匹配检验括号匹配检验为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能数值转换数值转换n十进制数值转换成二进制 使用展转相除法将一个十进制数值转换成二进使用展转相除法将一个十进制数值转换成二进制数值。制数值。即用该十进制数值除以即用该十进制数值除以2,并保留其余数;重,并保留其余数;重
19、复此操作,直到该十进制数值为复此操作,直到该十进制数值为0为止。为止。最后将所有的余数反向输出就是所对应的二进最后将所有的余数反向输出就是所对应的二进制数值。制数值。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能5822920214170231212101十进制十进制58的二进制表示为:的二进制表示为:111010为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能publicvoidDToB(intdecVal)SeqStacks=newSeqStack(50);whil
20、e(decVal!=0)s.Push(decVal%2);decVal/=2;while(!s.IsEmpty()Console.Write(s.Pop().ToString();Console.WriteLine();Console.ReadLine();为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能检验表达式中的括号匹配情况n 假设在一个算术表达式中,可以包含三种括号:圆括假设在一个算术表达式中,可以包含三种括号:圆括号号“(”和和“)”,方括号,方括号“”和和“”和花括号和花括号“”和和“”,并且这三种括号可以按任意的次序嵌
21、套,并且这三种括号可以按任意的次序嵌套使用。比如,使用。比如,.(.).。现。现在需要设计一个算法,用来检验在输入的算术表达式在需要设计一个算法,用来检验在输入的算术表达式中所使用括号的合法性。中所使用括号的合法性。n算术表达式中各种括号的使用规则为:算术表达式中各种括号的使用规则为:出现左括号,出现左括号,必有相应的右括号与之匹配,并且每对括号之间可以必有相应的右括号与之匹配,并且每对括号之间可以嵌套,但不能出现交叉情况嵌套,但不能出现交叉情况。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能n检验括号是否匹配的方法可以用检验括号
22、是否匹配的方法可以用“期待的急迫程度期待的急迫程度”这个这个概念来描述。概念来描述。n()(),()()是正确的格式,而是正确的格式,而(),()是错是错误的格式误的格式()12345678()()()为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能检验出错的情况n(1)当遇到某一个右括号时,栈已空,说明到目前为止,右括号多)当遇到某一个右括号时,栈已空,说明到目前为止,右括号多于左括号;于左括号;n(2)从栈中弹出的左括号与当前检验的右括号类型不同,说明出现)从栈中弹出的左括号与当前检验的右括号类型不同,说明出现了括号交叉情况;了
23、括号交叉情况;n(3)算术表达式输入完毕,但栈中还有没有匹配的左括号,说明左)算术表达式输入完毕,但栈中还有没有匹配的左括号,说明左括号多于右括号。括号多于右括号。我们可以利用一个栈结构保存每个出现的左括号,当遇我们可以利用一个栈结构保存每个出现的左括号,当遇到右括号时,从栈中弹出左括号,检验匹配情况。在检到右括号时,从栈中弹出左括号,检验匹配情况。在检验过程中,若遇到以下几种情况之一,就可以得出括号验过程中,若遇到以下几种情况之一,就可以得出括号不匹配的结论。不匹配的结论。为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能算法基本思
24、想算法基本思想n凡出现左括号,进栈凡出现左括号,进栈n凡出现右括号,首先检查栈是否是空凡出现右括号,首先检查栈是否是空若栈空,表明右括号多了若栈空,表明右括号多了否则和栈顶元素比较,否则和栈顶元素比较,若相等,则左括号出栈若相等,则左括号出栈否则不匹配否则不匹配n表达式检查结束时,表达式检查结束时,若栈空,则匹配正确若栈空,则匹配正确否则表明左括号多了否则表明左括号多了为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能迷宫求解.为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功
25、能算法思想算法思想n若当前位置若当前位置“可通可通”,则纳入,则纳入“路径路径”,继续,继续前进前进n若当前位置若当前位置“不可通不可通”,则后退,换向探索,则后退,换向探索n若四周皆若四周皆“不可通不可通”,则从路径中删除,则从路径中删除为深入学习习近平新时代中国特色社会主义思想和党的十九大精神,贯彻全国教育大会精神,充分发挥中小学图书室育人功能汉诺塔问题:汉诺塔问题:n有三根柱子分别叫有三根柱子分别叫A柱、柱、B柱、柱、C柱。现假设有柱。现假设有N个圆盘(都是按从大到小依次放入柱中的)个圆盘(都是按从大到小依次放入柱中的)已经放在了已经放在了A柱上,我们的任务就是把这柱上,我们的任务就是把
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 第三 队列 ppt 课件
限制150内