c语言课件:栈和队列.ppt
《c语言课件:栈和队列.ppt》由会员分享,可在线阅读,更多相关《c语言课件:栈和队列.ppt(49页珍藏版)》请在三一办公上搜索。
1、栈和队列,栈抽象数据类型栈的定义栈的表示和实现栈的应用举例数制转换表达式求解队列,是限制仅在线性表的一端进行插入和删除运算的线性表。,栈顶(TOP)允许插入和删除的一端。栈底(bottom)不允许插入和删除的一端。空栈表中没有元素。,栈(Stack),进栈最先插入的元素放在栈的底部。退栈最后插入的元素最先退栈。,栈的基本概念,栈:又称为后进先出的线性表(LIFO表,Last In First Out)一叠书或一叠盘子。,栈与子程序调用,调用子程序时,计算机将子程序要用到的参数及返回地址等信息存放在栈里子程序返回时,从栈顶取回返回地址,转回主调程序继续运行。处理递归调用,顺序栈,用数组定义(类似
2、于顺序表),将栈底位置设置在向量两端的任意一个端点;用top(整型量,栈顶指针)来指示栈当前栈顶位置。定义:typedef(type)Element;/*栈元素的数据类型*/#define maxsize 100/*栈初始的容量*/typedef struct stackElement datamaxsize;int top;Stack;/*顺序栈类型定义*/Stack*s;/*s是顺序栈类型指针*/,3 2 1 0,Top=-1空栈,顺序栈:栈顶指针与栈中元素间的关系,顺序栈,栈底位置固定在数组的低端,即:S-data0-表示栈底元素;进栈:S-TOP加1(正向增长)。退栈:S-TOP减1。
3、空栈:S-TOP TOP=maxsize-1上溢:栈满时再做进栈运算(一种出错状态,应设法避免)。,顺序栈的几种基本运算,置空栈判栈空进栈退栈取栈顶元素,顺序栈的几种基本运算,置空栈:Create(Stack&S),void Create(Stack&S)/*将顺序栈S置为空*/S.top=-1,顺序栈的几种基本运算,判栈空:,Bool Empty(Stack/*Empty*/,void Push(Stack/*Push*/,顺序栈的几种基本运算,进栈:,/*若栈S非空,取出栈顶元素删除*/void Pop(Element,退栈:Pop(S),顺序栈的几种基本运算,/*取顺序栈S的栈顶*/El
4、ement Top(Stack,取栈顶:Top(S),顺序栈的几种基本运算,链栈,栈的链式存储结构(当顺序栈的最大容量事先无法估计时,可采用链栈结构)。,TOP,e1 next,栈顶,.,链栈的定义:typedef struct cell*Position;typedef struct cell Element e1;Position next;Cell;typedef struct stack Position*top;Stack;,链栈的特点,插入和删除(进栈/退栈)仅能在表头位置上(栈顶)进行。链栈中的结点是动态产生的,可不考虑上溢问题。不需附加头结点,栈顶指针就是链表(即链栈)的头指针
5、。,void Push(Element e,Stack,.,栈底,x,s.top,链栈进栈运算,链栈退栈运算,void Pop(Element,栈小结,顺序栈有发生上溢 的可能,而链栈通常不会发生栈满(除非整个空间均被占满)只要满足LIFO原则,均可采用栈结构。栈的应用实例:递归调用。,栈的应用举例一数制转换,十进制N和其它进制数的转换是计算机实现计算的基本问题,其解决方法很多,其中一个简单算法基于下列原理:N=(n div d)*d+(n mod d),(185)10=(?)8,(1 8 5)10=(2 7 1)8,栈的应用举例一数制转换,void conversion()/conversi
6、on Initstack(S);scanf(“%d”,栈的应用举例一数制转换,栈的应用举例一算术表达式,建立2个栈:操作数栈及运算符栈,初始为空从左到右读取表达式,如果读到操作数则置入操作数栈中,若读到运算符时则置入运算符栈。当读到的运算符优先级比栈中的运算符高,则存入栈当读到的运算符优先级比堆栈中的运算符低或相等,则取出该运算符并从操作数栈取出相应的操作数运算,并将结果存回操作数栈;同时新运算符入栈;堆栈非空从运算符栈中取出一个运算符从操作数栈中取出所需操作数计算其值后将结果存回操作数栈,例 计算 2+4-3*6,例 计算 2+4-3*6,栈的应用举例一算术表达式,队列,只允许在表的一端进行
7、插入,而在表的另一端进行删除,是一种先入先出的线性表(FIFO)。,队列的基本概念,队头(head):允许删除(出队)的一端队尾(tail):允许插入的一端空队列:队列中没有元素进队:队的插入运算,即插入新的队尾元素出队:队的删除运算,删除队首元素,队列的基本运算,入队出队取队头元素置空队列判队列是否为空,顺序队列,队列的顺序存储结构,用一组连续的存储单元依次存放队列中的元素顺序队列的类型说明:typedef struct datatype datam;int head,tail;/*队首、队尾*/queue;queue*sq;,BA,DC,3 2 1 0,sq-headsq-tail,sq-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 队列
链接地址:https://www.31ppt.com/p-6504360.html