《数据结构线性表》PPT课件.ppt
《《数据结构线性表》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《数据结构线性表》PPT课件.ppt(70页珍藏版)》请在三一办公上搜索。
1、第三章 栈和队列,3.1 栈,3.1.1 栈的概念一、什么是栈,栈是限定仅能在表尾一端进行插入、删除操作的线性表,(a1,a2,.,ai-1,ai,ai+1,an),插入,删除,能进行插入和删除的一端称为栈顶,另一端称为栈底。称插入操作为进栈,删除操作为出栈。进栈出栈操作只能在栈顶进行。,3.1 栈,栈的特点后进先出,第一个进栈的元素在栈底最后一个进栈的元素在栈顶第一个出栈的元素为栈顶元素最后一个出栈的元素为栈底元素,3.1 栈,二、栈的基本操作1)初始化操作 InitStack(&S)功能:构造一个空栈S。2)销毁栈操作 DestroyStack(&S)功能:销毁一个已存在的栈。3)置空栈操
2、作 ClearStack(&S)功能:将栈S置为空栈。4)取栈顶元素操作 GetTop(S,&e)功能:取栈顶元素,并用e 返回。,3.1 栈,二、栈的基本操作5)进栈操作 Push(&S,e)功能:元素e进栈。6)退栈操作 Pop(&S,&e)功能:栈顶元素退栈,并用e返回。7)判空操作 StackEmpty(S)功能:若栈S为空,则返回True,否则,栈不空返回False。,3.1 栈,3.1.2 栈的顺序存储和实现,一、栈的顺序存储结构,#define STACK_INIT_SIZE 100/栈存储空间的初始分配量#define STACKINCREMENT 10/空间的分配增量type
3、def struct ElemType*base;/栈空间基址 ElemType*top;/栈顶指针 int stacksize;/当前分配的栈空间大小SqStack;,3.1 栈,3.1.2 栈的顺序存储和实现,顺序栈的图示,S.stacksizeS.topS.base,100,约定栈顶指针指向栈顶元素的下一个位置,3.1 栈,3.1.2 栈的顺序存储和实现,top,base,空栈,B C D E进栈,E D C出栈,称为:栈满,空栈 top=base 栈满 top-base=stacksize(无可分配空间),3.1 栈,不可扩充栈的操作,栈空,栈顶指针top,指向实际栈顶后的空位置,初值
4、为 base,进栈,A,栈满,B,C,D,E,设数组大小为Mtop=M,栈满,此时入栈,则上溢(overflow),栈空,top=base,栈空,此时出栈,则下溢(underflow),出栈,3.1 栈,可扩充栈的操作,栈顶指针top,指向实际栈顶后的下一个位置,初值为 top=base,进栈,A,出栈,栈当前空间不足,需扩充,B,C,D,E,设栈的初始分配量为 Stacksize=STACK_INIT_SIZE。若 top=Stacksize,栈满,此时入栈,则需扩充栈空间,每次扩充 STACK_INCREMENT;若无可利用的存储空间,则上溢(overflow)。,栈空,若top=base
5、,栈空,此时出栈,则下溢(underflow),base,栈空,top,3.1 栈,二、顺序栈基本操作的算法1)初始化操作 InitStack(SqStack&S)参数:S是存放栈的结构变量功能:建一个空栈S,100,3.1 栈,初始化操作算法Status InitStack(SqStack/InitStack,2)销毁栈操作 DestroyStack(SqStack&S)功能:销毁一个已存在的栈,100,3.1 栈,Status DetroyStack(SqStack/DetroyStack,销毁操作算法,3.1 栈,3)置空栈操作ClearStack(SqStack&S)功能:将栈S置为空
6、栈,3.1 栈,Status ClearStack(SqStack/ClearStack,置空操作算法,3.1 栈,an,4)取栈顶元素操作GetTop(SqStack S,ElemType&e)功能:取栈顶元素,并用e返回,3.1 栈,Status GetTop(SqStack S,ElemType/GetTop,取栈顶元素操作算法,3.1 栈,5)进栈操作 Push(SqStack&S,ElemType e)功能:元素 e 进栈。,3.1 栈,进栈操作算法Status Push(SqStack/Push,3.1 栈,6)出栈操作 Pop(SqStack&S,ElemType&e)功能:栈顶
7、元素退栈,并用 e 返回。,3.1 栈,Status Pop(SqStack/Pop,出栈操作算法,3.1 栈,栈的链式存储结构,也称链栈。,栈顶,栈底,在前面学习了线性链表的插入、删除操作算法,不难写出链式栈初始化、进栈、出栈等操作的算法。,3.1.3 栈的链式存储和实现,3.1 栈,小 结1、栈是限定仅能在表尾一端进行插入、删除操作的线性表2、栈的元素具有后进先出的特点3、栈顶元素的位置由一个称为栈顶指针的变量指示,进栈和出栈操作都要修改栈顶指针,3.1 栈,1)问题的提出从键盘一次性输入一串算术表达式,给出计算结果。,栈的应用举例表达式求值,3.2 栈的应用举例,2)表达式的构成 操作数
8、+运算符+界符,1,2,3,4,常数,+、-、*、/,()、#,3.2 栈的应用举例,3)表达式的求值:例:5+6(1+2)-4 按照四则运算法则,上述表达式的计算过程为:5+6(1+2)-4=5+63-4=5+18-4=23-4=19,4)算符优先关系表 表达式中任何相邻运算符 1、2 的优先关系有:1 2:1的优先级 高于 2,注:1、2是相邻算符,1在左,2在右,3.2 栈的应用举例,5)算符优先算法,从左向右扫描表达式:遇操作数保存;遇运算符号j与前面的刚扫描过的运算符i比较:若ij 则说明i是已扫描的运算符中优先级最高者,可进行运算 若i=j 则说明括号内的式子已计算完,需要消去括号
9、,5+4(1+2)-6,后面也许有优先级更高的算符,+,+,(,后保存的算符优先级高,用两个栈分别保存扫描过程中遇到的操作数和运算符,3.2 栈的应用举例,在算符优先算法中,建立了两个工作栈。一个是OPTR栈,用以保存运算符;一个是OPND栈,用以保存操作数或运算结果。算法的基本思想是:1、首先置操作数栈为空栈,表达式起始符“#”为运算符栈的栈底元素。2、依次读入表达式中每个字符,若是操作数,则进OPND栈;若是运算符,则与OPTR栈的栈顶运算符比较优先级后作相应操作。直至整个表达式求值完毕(即OPTR栈的栈顶元素和当前读入的字符均为“#”)。,3.2 栈的应用举例,表达式求值示意:5+6(1
10、+2)-4,#,5,+,6,(,1,+,2,3,18,23,-,4,19,5,读入表达式过程:,+,6,(,1,+,2,),-,4,#,=19,1+2=3,63=18,5+18=23,23-4=19,3.2 栈的应用举例,算法描述operandType EvaluateExpression()/算术表达式求值的算符优先算法。设OPTR和OPND分别为运算符栈和运算数栈,OP为运算符、界限符集合。InitStack(OPTR);Push(OPTR,#);InitStack(OPND);c=getchar();while(c!=#|GetTop(OPTR)!=#)if(!In(c,OP)/In(c
11、,OP)判断c是否为运算符 Push(OPND,c);c=getchar();/不是运算符则进栈 else,3.2 栈的应用举例,switch(Precede(GetTop(OPTR),c)/判定OPTR的栈顶运算符1与读入的运算符2间的优先关系 case:/新输入的算符c优先级低,即栈顶算符优先权高/出栈并将运算结果入栈OPND Pop(OPTR,theta);Pop(OPND,b);Pop(OPND,a);Push(OPND,Operate(a,theta,b);/进行二元运算a b break;/switch/while return GetTop(OPND);/EvaluateExpr
12、ession,3.2 栈的应用举例,递归是很有用的工具,在数学和程序设计等许多领域中都会用到。递归定义:简单说,一个用自己定义自己的概念,称为递归定义。任何一个递归程序都可以通过非递归程序实现。,3.3 栈与递归,3.4.1 队列的概念一、什么是队列,队列是限定仅能在表头进行删除,表尾进行插入的线性表。,(a1,a2,.,ai-1,ai,ai+1,an),插入,删除,能进行插入的一端称为队尾,能进行删除的一端称为队头。称插入操作为入队,删除操作为出队。,3.4 队列,a1 a2 a3 an,队头,队尾,出队列,队列的示意图,队列的特点先进先出,第一个入队的元素在队头最后一个入队的元素在队尾第一
13、个出队的元素为队头元素最后一个出队的元素为队尾元素,出队列,3.4 队列,二、队列的基本操作1)初始化操作 InitQueue(&Q)功能:构造一个空队列Q。2)销毁操作 DestroyQueue(&Q)功能:销毁已存在队列Q。3)置空操作 ClearQueue(&Q)功能:将队列Q置为空队列。4)出队操作 DeQueue(&Q,&e)功能:删除Q的队头元素。5)取队头元素操作 GetHead(Q,&e)功能:取队头元素,并用e返回。,3.4 队列,二、队列的基本操作6)入队操作 EnQueue(&Q,e)功能:将元素e插入Q的队尾。7)判空操作 QueueEmpty(Q)功能:若队列Q为空,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构线性表 数据结构 线性 PPT 课件
链接地址:https://www.31ppt.com/p-5584123.html