数据结构:栈原理和应用课件.ppt

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构:栈原理和应用课件

;主要内容;栈是限定仅能在表尾一端进行插入、删除操作的线性表;第一个进栈的元素在栈底, 最后一个进栈的元素在栈顶, 不含元素的栈称为空栈。;bottom;4、 栈的基本操作;栈属于加了限制条件的线性结构; 栈是后进先出的线性表; 进栈和出栈只能从栈的一个端点进行; 栈中的元素个数可以是0,此时是空栈; 栈的元素的个数是可以变化的,可以是多个,但不能是无穷多个; 每个栈中的元素的类型相同.;思考:假设有A,B,C三个元素进S栈的顺序是A,B,C,写出所有可能的出栈序列。;如果是4个元素,那么它 不可能的出栈序列有哪些?;用一个一维数组和一个整型变量来实现。;约定栈顶指针指向 向栈顶元素的位置;1 ) 初始化栈 viod initstack(struct stack s ) { s.top=-1; } ;2 ) 进栈操作 viod Push ( struct stack s, datatype x ) { s.top=s.top+1; s.array[top]=x; } ;3)出栈操作 int pop( struct stack s ) { return(array[s.top]) ; s.top-- ; };栈在运算过程中可能发生“溢出”现象: 上溢 下溢;顺序栈的不足: 存在栈满以后就不能再进栈的问题 (这是因为用了定长的数组存储栈的元素) 解决方法: 使用链式存储结构。;三 、栈的链式存储和实现 栈的链式存储结构,也称链栈。其各结点的结构与单链表中的结点结构完全相同。如图所示:;(1) 初始化栈 Void initstack(pointer s) { s=null; };Data next;进栈算法 Void push(pointer s,datatype x) { p= (pointer *) malloc ( sizeof (node )); p-data=x; p-next=s-next; s-next=p; };出栈前 出栈后;出栈算法;四、栈的应用举例; 十进制数转换为八进制数。采用对十进制数除8取余的方法,可得到八进制数的倒序。 N = (N div d)×d + N mod d 例如:(1348)10 = (2504)8 ,其运算过程如下: N N div 8 N mod 8 1348 168 4 168 21 0 21 2 5 2 0 2;(2)算术表达式求值;操作符优先级表;求表达式算法;例如:表达式3*(7-2),求值过程如下表:;五、课堂作业:迷宫问题;迷宫;解题的思路;需要解决的几个问题;

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档