网站大量收购独家精品文档,联系QQ:2885784924

数据结构3栈.ppt

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

计算机软件基础 3.1 堆栈 3.2 堆栈的应用 3.3 队列 3.4 队列的应用 * 第3章 堆栈和队列 * 3.1 堆栈 ( Stack ) 3.1.1 堆栈的概念 3.1.2 堆栈抽象数据类型 3.1.3 顺序栈及操作 3.1.4 链式栈及操作 3.1.1 堆栈的基本概念 堆栈:只允许在一端插入和 删除的线性表。 栈顶(top):允许插入和删除的一端称为栈顶, 栈底(bottom):另一端 出栈或 退栈 入栈或 进栈 a0 a1 … an-2 an-1 bottom top 特点: 后进先出 (LIFO) 相关术语 栈满:栈内元素个数为MaxSize时。 top=MaxSize-1 栈空:栈内无元素。 top=-1 上溢:当栈满时,还要进栈。 下溢:当栈空时,还要出栈。 数据元素: 堆栈的数据集合可表示为a0,a1…an-1,每个元素的类型:DataType 关系:数据元素之间为线性关系. 操作集合: 1、初始化: InitStack(S) 操作前提: S为未初始化的栈。  操作结果: 将S初始化为空栈。 2. 判栈是否非空: IsNotEmpty(S) 操作前提:栈S已经存在。  操作结果:判栈非空函数,若S为空栈,则函数值为0,否则为1。 3.1.2 堆栈抽象数据类型 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.顺序栈及操作 顺序栈用一维数组表示。用top指向栈顶,表示栈内元素个数,即数组下标。 1.堆栈的存储结构: 顺序存储结构:顺序栈 链接存储结构:链式栈 2. 顺序栈的C语言描述: typedef int DataType; #define MaxSize 64 typedef struct { DataType stack[MaxSize]; int top; }SeqStack; 结构体形式: SeqStack包括:stack数组和top两项 SeqStack是一个结构体类型 stack[MaxSize] top q q-top q-stack[0] q-stack[1] q-stack[2] … q-stack[MaxSize-1] SeqStack *q; c语言的算法描述使用的数据类型示意图 进栈过程示例 top top a1 a2 a3 a4 top top top MaxSize个 空栈 a1进栈 a2进栈 a3进栈 a4进栈 退栈过程示例 … (1).初始化 InitStack(SeqStack *s) { s-top=-1; } 2. 顺序栈的基本运算 (2).判栈非空 int IsNotEmpty (SeqStack *s) {if (s-top0) return 0; else return 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); } 判栈满? 栈顶指针加1 入栈 (3).进栈算法 int PopStack(SeqStack *s,Datatype *x) { if (s-top0) { printf(“underflow\n”); return (FALSE); } else {*x= s-stack[s-top]; s-top--; return(TRUE); } } 判栈空? 栈顶减1 返回栈顶元素 (4).退栈算法 DataType TopStack(SeqStack *s) {if (s-top0) {printf(“underflow\n”); return 0; } el

文档评论(0)

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

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

1亿VIP精品文档

相关文档