数据结构应用(栈——基础知识).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 停车栈可突出栈的后进先出的实际作用 * * 结论:栈具有后进先出(Last In First Out)特性,简称为LIFO线性表 * * * * 栈的顺序存储结构是用一组连续的存储单元依次存放栈中的每个数据元素,并用起始端作为栈底。 * * 图(a)是空栈,s.top= -1; 图(b)是A入栈,s.top=0,s.elem [0]= A; 图(c) 是B、C、D、E四个元素依次入栈之后,s.top=4,由于栈已满,若再入栈,则溢出; 图(d)是E、D相继出栈,此时栈中还有3个元素 * * 以下几点说明: 1. 对于顺序栈,入栈时,首先判断栈是否满了,栈满的条件为:s-top= =MAXSIZE-1,栈满时,不能入栈; 否则出现空间溢出,引起错误,这种现象称为上溢。 2. 出栈和读栈顶元素操作,先判断栈是否为空,为空时不能操作,否则产生错误。通常栈空时常作为一种控制转移的条件。 * * * * * * 栈 基础知识 栈的定义 一摞书籍、一叠盘子 往手电筒里放电池,取电池.最先放的是最后被取出 铁路调度中用到停车栈 生活中栈的实例 栈的插入和删除操作分别称为进栈和出栈。进栈是将一个数据元素存放在栈顶,出栈是将栈顶元素取出。图中 a1称为栈底元素,an为栈顶元素。 定义:栈(stack)是限定仅在表尾的一端进行插入或删除操作的线性表。允许进行插入或删除操作的一端称为栈顶(top),而另一端称为栈底(bottom)。不含元素的栈称为空栈。 栈的定义及基本运算 a1 a2 an-1 an … 栈顶 (top) 栈底 (bottom) 出栈 进栈 栈底元素 栈顶元素 栈的“上溢”和“下溢” 当栈满时再做进栈运算必定产生空间溢出,简称“上溢”;当栈空时再做退栈运算也将产生溢出,简称“下溢”。上溢是一种出错状态,应该设法避免之;下溢则可能是正常现象,因为栈在程序中使用时,其初态或终态都是空栈,所以下溢常常用来作为程序控制转移的条件。 Init() Destroy(S) Clear(S) Push(S, e) Pop(S, e) IsEmpty(S) Size(S) GetTop(S, e) 栈的主要操作 顺序栈的操作实现 typedef struct{ DataType data[MaxSize]; int top;// top 指示栈顶元//素在顺序栈中的位置(下标) }SeqStack a1 a2 an-1 an … top 栈底 (bottom) 栈底元素 栈顶元素 栈的顺序存储定义 A E s .top 4 3 2 1 0 s .top =-1 (a)空栈 4 3 2 1 0 s .top s .top =0 (b)进栈 s.top 4 3 2 1 0 A B C D s .top =4 (c)栈满 s .top 4 3 2 1 0 s .top =2 (d)出栈 A B C A E ⑴ 置空栈:首先建立栈空间,然后初始化栈顶指针。 SeqStack *Init () { SeqStack *s; s=new SeqStack; s-top= -1; return s; } 顺序栈的基本操作 ⑵ 判空栈 bool IsEmpty(SeqStack *s) { if (s-top== -1) return true; else return false; } 顺序栈的基本操作 ⑶ 入栈 int Push (SeqStack *s,DataType x) { if (s-top==MaxSize-1) return ERROR; //栈满不能入栈 else { s-top++; s-data[s-top]=x; return OK; } } 顺序栈的基本操作 ⑷ 出栈 int Pop (SeqStack *s, DataType *x) { if (IsEmpty ( s ) ) return ERROR; //栈空 else { *x=s-data[s-top]; //栈顶元素存入*x s-top--; return OK; } } 顺序栈的基本操作 ⑸ 取栈顶元素 DataType GetTop(SeqStack *s) { if ( IsEmpty (

文档评论(0)

187****5045 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档