数据结构3栈选编.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文档。上传文档
查看更多
数据结构3栈选编

3.1 堆栈 3.2 堆栈的应用 3.3 队列 3.4 队列的应用 ;3.1 堆栈 ( Stack );3.1.1 堆栈的基本概念;相关术语;数据元素: 堆栈的数据集合可表示为a0,a1…an-1,每个元素的类型:DataType 关系:数据元素之间为线性关系. 操作集合: 1、初始化: InitStack(S) 操作前提: S为未初始化的栈。  操作结果: 将S初始化为空栈。 2. 判栈是否非空: IsNotEmpty(S) 操作前提:栈S已经存在。  操作结果:判栈非空函数,若S为空栈,则函数值为0,否则为1。;3、进栈: Push(S,x) 操作前提:栈S已经存在。  操作结果:在S的顶部插入元素x;若S栈未满,将x插入栈顶位置,若栈已满,则返回FALSE,表示操作失败,否则返回TRUE。 4、退栈:Pop(S, x) 操作前提:栈S已经存在。  操作结果:删除栈S的顶部元素,并用x带回该值;若栈为空,返回值为FALSE,表示操作失败,否则返回TRUE。 5、取栈顶元素:GetTop(S,x) 操作前提:栈S已经存在。  操作结果:取栈S的顶部元素。返回栈顶元素。;3.1.3.顺序栈及操作;typedef int DataType; #define MaxSize 64 typedef struct { DataType stack[MaxSize]; int top; }SeqStack; ;;进栈过程示例;退栈过程示例;(1).初始化 InitStack(SeqStack *s) { s-top=-1; } ;Int PushStack(SeqStack *s,DataType x) { if (s-top==MaxSize-1) { printf(“overflow\n”);return (FALSE);} else { s-top++; s-stack[s-top]=x; } return (TRUE); };int PopStack(SeqStack *s,Datatype *x) { if (s-top0) { printf(“underflow\n”); return (FALSE); } else {*x= s-stack[s-top]; s-top--; return(TRUE); } };DataType TopStack(SeqStack *s) {if (s-top0) {printf(“underflow\n”); return 0; } else return(s-stack[s-top]); };堆栈算法练习; 最常用的是两个栈的共享技术:它主要利用了栈“栈底位置不变,而栈顶位置动态变化”的特性。双端栈 目的:节省空间;两栈共享数据结构定义:;初始化算法;a0;int PushDqstack(DqStack*s,char WhichStack,DataType x) {if (s-Top[0]= s-Top[1]-1) {printf(“栈满”); return 0;} if (WhichStack!=‘L’ WhichStack !=‘R’) {printf(“出错”); return 0;} if (WhichStack==‘L’) s-stack[++s-Top[0]]=x; else s-stack[--s-Top[1]]=x; return 1; } ;共用堆栈的出栈算法:;1.栈的链接表示 — 链式栈;2.链栈的结点定义;top;int PushStack(LSNode *top, DataType x) { LSNode *p; if ((p=malloc(sizeof(LSNode)))==NULL {printf(“\n失败”); return 0;} p-data=x; p-next=top-next; top-next=p; return 1; };DataType PopStack(LSNode *top) { LSNode *p; DataType datap; p=top-next; if (p==NULL) {printf(“under flow\n”); retur

文档评论(0)

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

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档