C语言数据结构第04讲栈.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文档。上传文档
查看更多
C语言数据结构第04讲栈

实用数据结构基础;第 3 章 栈 ;要 求 掌握栈的特点 掌握栈的基本运算 熟悉栈的各种实际应用 能设计栈的应用的典型算法 了解栈的运算时间复杂度分析;第3章 目录;3-1 栈的定义和运算;2. 栈的特性 (1)栈的主要特点是“后进先出” (2)允许插入、删除的这一端称为栈顶(Top),另一端称为栈底(Bottom)。 3. 应用实例 (1)分币筒; (2)铁路调度站。 ;3-1-2 栈的运算 1.进栈: Push(s,x) 初始条件:栈s已存在且非满。 操作结果:在栈顶插入一个元素x,栈中多了一个元素。 2.出栈:Pop(s) 初始条件:栈s存在且非空。 操作结果:删除栈顶元素,栈中少了一个元素。 3.读栈顶元素:ReadTop(s,e) 初始条件:栈s已存在且非空。 操作结果:输出栈顶元素,但栈中元素不变。;4. 判栈空:SEmpty(s) 初始条件:栈s已存在。 操作结果:若栈空则返回为0,否则返回为1。 5. 判栈满:SFull(s) 初始条件:栈s已存在。 操作结果:若栈满则返回为0,否则返回为1。 6. 显示栈元素:ShowStack (s) 初始条件:栈s已存在?,且非空。 操作结果:显示栈中所有元素。;3-2 栈的存储和实现;(2) 用结构体数组实现顺序栈 顺序栈的结构体描述: #define MAXLEN 10 // 分配最大的栈空间 typedef struct // 定义结构体 { datatype data[MAXLEN]; // datatype可根据用需要定义类型 int top; // 定义栈顶指针 } SeqStack; 再定义一个指向顺序栈的指针: SeqStack *S; // 定义S为结构体类型的指针变量;(3)栈操作的示意图如图3-3所示。 ; 当top = -1时,表示栈空,如图3-3(a); 当top=0时,表示栈中有一个元素,如图3-3(b)表示栈中已输入一个元素A; 入栈时,栈顶指针上移,指针top加1,如图3-3(c)是6个元素入栈后的状况; 出栈时,栈顶指针下移,指针top减1, 如图3-3(d)是在F、E相继出栈后的情况。此时栈中还有A、B、C、D 4个元素,top=3,指针已经指向了新的栈顶。但是出栈的元素F、E仍然在原先的存储单元,只是不在栈中了,因为栈是只能在栈顶进行操作的线性表。 当top=9时,即top=MAXLEN–1,表示栈满,如图3-3(e)。;2.顺序栈运算的基本算法 (1)置空栈 首先建立栈空间,然后初始化栈顶指针。 SeqStack *Snull() { SeqStack *s; s=new (SeqStack); // 在C语言中用s=malloc(sizeof(SeqStack)); s-top= –1; // 置栈空 return s; } ;(2) 进栈 进栈运算是在栈顶位置插入一个新元素x,其算法步骤为: (a)??? 判栈是否为满,若栈满,作溢出处理,并返回0; (b)??? 若栈未满,栈顶指针top加1; (c)??? 将新元素x送入栈顶,并返回1。 int Push (SeqStack *s, datatype x) { if (s-top= =MAXLEN–1) return 0; // 栈满不能入栈,且返回 0 else { s-top++; s-data[s-top]=x; // 栈不满,则压入元素x return 1;} // 进栈成功,返回1 };(3)出栈 出栈运算是指取出栈顶元素,赋给某一个指定变量x,其算法步骤为: (a)? 判栈是否为空,若栈空,作下溢处理,并返回0; (b) 若栈非空,将栈顶元素赋给变量x; (c)? 指针top减1,并返回1。 int Pop(SeqStack *s, datatype

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档