清华大学11.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文档。上传文档
查看更多
清华大学 黄维通 设计制作 第12章 栈及其应用 清华大学 黄维通 设计制作 * 第12章 栈及其应用 本章主要内容 栈的定义及其基本操作 栈的实现 进制转换--栈的应用实例 栈是一种只允许在栈顶进行插入和删除操作的线性表,可用数组或线性表来实现 12.1 栈的定义及其基本操作 栈的基本操作有: l?ClearStack(S):清空一个栈; l?GetTop(S, e):获取栈顶元素(不删除该栈顶元素); Pop(S, e):获取栈顶元素但同时删除该元素; Push(S, e):向栈顶插入一个元素; Empty(S):判断是否为空栈的函数。当S为空栈时,返回true,否则返回false top top top top 栈的基本操作 空栈 增加元素 删除元素 Top为栈顶指针,随着不同操作而移动 bottom bottom bottom bottom 栈是一种特殊的表,因此凡是可以用来实现表的数据结构都可以用来实现栈。 12.2 栈的实现 12.2.1 栈的数组实现 #define MAXLENGTH 256 #define TYPE int struct TStack { int top; TYPE element[MAXLENGTH]; }; typedef struct TStack Stack; 链式存储栈的类型说明如下: #define TYPE int //定义任意类型的栈结构 struct TNode {TYPE field; //TYPE泛指任意可能的类型 struct TNode * next; }; typedef struct TNode * Stack; //定义一个Stack栈 12.2.2 栈的链式存储实现 (1) 清空一个栈的操作 void ClearStack(Stack s) { Node * p = s; while(p != NULL) { s = s-next; free(p); p = s; } s = NULL; } (2) 获取栈顶元素的操作 void GetTop(Stack s, TYPE * element) { if(Empty(s)) element = NULL; else *element = s-element; } (3) 获取栈顶元素但同时删除该元素 void Pop(Stack s, TYPE * element) { if (Empty(s)) element = NULL; else { *element = s-element; s = s-next; } } (4) 向栈顶插入一个元素的操作 void Push(Stack s, TYPE element) { Node * node; node = malloc(sizeof(Node)); node-field = element; node-next = s; s = node; } (5) 判断是否为空栈的操作 int Empty(Stack s) { return (s == NULL); } 12.3进制转换--栈的应用实例 (1) 算法 #include stdio.h #include stdlib.h #define MAXLENGTH 32 #define TYPE int struct TStack //定义栈结构 { int top; TYPE element[MAXLENGTH]; }; typedef struct TStack Stack; 12.3.2 算法的实现 ?例:(15)10=(1111)2 void ClearStack(Stack *s) //清空栈 { s-top = -1; } int Empty(Stack s) //判断是否为空栈 { if (s.top == -1) return 1; else return 0; } void GetTop(Stack s, TYPE * element) //获取栈顶元素 { if(Empty(s)) element = NULL; else *element=s.element[s.top]; } void Pop(Stack * s, TYPE * element) //获取栈顶元素但同时删除该元素 {if(Empty(*s) )element = NULL; else { *element = s-element[s-top]; s-top--; } } void Push(Stack * s, TYPE e

文档评论(0)

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

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

1亿VIP精品文档

相关文档