《数据结构与算法》PPT课堂课件-第3章-栈.pdf
《《数据结构与算法》PPT课堂课件-第3章-栈.pdf》由会员分享,可在线阅读,更多相关《《数据结构与算法》PPT课堂课件-第3章-栈.pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、12021/6/13第三章 栈栈是一种特殊的线性表,是操作受限的线性表,称其为限定性数据结构。3.1 ADT栈(stack)栈的定义和特点n定义:限定仅在表首进行插入或删除操作的线性表,表表首首栈栈顶顶,表表尾尾栈栈底底,不含元素的空表称空栈n特点:先进后出(FILO)或后进先出(LIFO)22021/6/13ana1a2.栈底栈顶.出栈进栈栈S=(a1,a2,an)p栈的操作示例32021/6/133.1 ADT栈(Stack)ADT栈上定义的常用的基本运算(1)Empty():判断栈空(2)Full():判断栈满(3)Top():返回栈顶元素(4)Push(x):将元素x入栈(5)Pop(
2、x):出栈,并将栈顶元素存入x中42021/6/133.1.1栈栈应应用用的的简简单单例例子子 例例1、程程序序编编译译时时的的表表达达式式或或字字符符串串的的括括号号匹匹配配问问题题。例如,算术表达式(x*(x+y)-z),其中位置1和4处有左括号,而位置8和11处有右括号,满足配对要求。但算术表达式 (x+y)*z)(,其中位置8处的右括号没有可与之配对的左括号,而位置9处的左括号没有可与之配对的右括号。这里要在栈的基本运算的基础上定义算术表达式(字符串)expr中的圆括号配对检查运算void Parenthesis(char*expr)52021/6/13例2、回文游戏:顺读与逆读字符串
3、一样(不含空格)dadtop1.读入字符串2.去掉空格(原串)3.压入栈4.原串字符与出栈字符依次比较 若不等,非回文 若直到栈空都相等,回文例3、多进制输出:字符串:“madam im adam”例 把十进制数159转换成八进制数(159)10=(237)815981982802 3 7 余 7余 3余 2toptop7top73top73262021/6/133.2 栈的存储结构3.2.1 用数组实现栈顺序栈3.2.1.1实现:一维数组sMtop=-1123450栈空栈顶指针top,指向实际栈顶后后的空位置,初值为-1top123450进栈Atop出栈栈满BCDEF设数组维数为Mtop=-
4、1,栈空,此时出栈,则下溢(underflow)top=M-1,栈满,此时入栈,则上溢(overflow)toptoptoptoptop123450ABCDEFtoptoptoptoptoptop栈空72021/6/133.2.1.2栈的数组实现的优缺点v优点:所列的7个基本运算都可在O(1)的时间里完成,效率高。v缺点:为了使每个栈在算法运行过程中不会溢出,通常要为每个栈预置一个较大的栈空间。另一方面,由于各个栈的实际大小在算法运行过程中不断变化。经常会发生其中一个栈满,而另一个栈空的情形,空间利用率低。82021/6/133.2.2两个栈共用一个数组的实现v2个栈共享一个数组stack0.
5、n 利用栈底位置不变的特性,可以将2个栈的栈底分别设在数组stack的两端。然后各自向数组stack的中间伸展,如图所示。好处:提高空间利用率,减少栈发生上溢的可能性。92021/6/133.2.3 用指针实现栈链栈typedef struct snode*slink;typedef struct snode StackItem element;slink next;StackNode;l链栈结点及用指针实现的栈结点定义102021/6/13入栈算法出栈算法 .栈底toptopxptop .栈底topp3.2.3.1 入栈、出栈算法实现及演示:112021/6/133.2.3.2栈的应用例1、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法 数据结构 算法 PPT 课堂 课件
限制150内