[理学]数据结构 第三章__栈和队列本.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[理学]数据结构 第三章__栈和队列本

数据结构与算法 华东师范大学计算机系 * * 实习 实习时间:10月13日6:00至8:30 实习地点:计算机楼126机房 实习题目:在单链表中,把值为a的结点插在值为b的结点前面;若链表中没有值为b的结点,则把值为a的结点插在链表的最后。编写程序实现。 第三章 栈和队列 3.1 栈 栈 是被限定仅在一端进行插入和删除的线性表。例如,编译器对表达式的语法分析就用到了栈;函数、、过程或子程序的实现是用栈来实现的。 3.1.1 栈的概念 a d c d 栈顶(top) 栈底(bottom) 进栈(push)、出栈(pop)。 栈顶元素 3.1 栈 3.1.1 栈的概念 栈的应用:例[3.1] 火车调度问题 p61 3.1.2 顺序栈 利用数组来表示顺序栈,通常,用一个整型变量(指针)top记录(指向)栈顶结点在数组中的位置(下标),称top为栈顶指针。 有两种方法。 1.置top=-1表示栈空。top指向栈顶结点的存放位置 -1 top Maxn-1 … 2 1 0 2 1 0 -1 … c b a top Maxn-1 … 2 1 0 z … c b a top Maxn-1 3.1 栈 3.1 栈 3.1.2 顺序栈 2.置top=0,表示初始时栈空,top指向下一次进栈结点的存放位置 top Maxn-1 … 2 1 0 2 1 0 … b a top Maxn-1 … 2 1 0 z … c b a Top=Maxn Maxn-1 3.1 栈 Maxn-1 2 1 0 … top Maxn-1 2 1 0 … top Maxn-1 2 1 0 … top Maxn-1 2 1 0 … top Maxn-1 2 1 0 … top a b a a 1.置top=0,表示初始时栈空,top指向下一次进栈结点的存放位置 3.1 栈 3.1.2 顺序栈 下面按第二种表示方法给出栈的操作算法,假设栈中结点的数据类型是char。 #define Maxn 26 char stack[Maxn]; int top=0; //把栈置成为空的初态 int SqPush(char x) //进栈操作 {if(top=Maxn)return(0);//栈满,进栈失败,返回0 stack[top++]=x;return(1);//进栈成功,返回1 } 全局变量 3.1 栈 3.1.2 顺序栈 int SqPop(char*p_y)//出栈操作 {if(top==0)return(0);//栈空,出栈失败,返回0 *p_y=stack[--top]; return(1);//出栈成功,返回1 } 3.2 栈的应用 例[3.2]数制转换问题 假设(abcdef)10是非负整数N的十进制表示(记为N=(abcdef)10) N=a*105 +b*104 +c*103 +d*102 +e*10+f 假设(abcdef)8是非负整数N的八进制表示(记为N=(abcdef)8) N=a*85 +b*84 +c*83 +d*82 +e*8+f 3.2 栈的应用 3.2.1 数制转换 以N=(3456)10,r=8为例,计算过程如下: N0=N=3456 N0 % 8=0 低位 N1=N0/8=432 N1 % 8=0 N2=N1/8=54 N2 % 8=6 N3=N2/8=6 N3 % 8=6 高位 N4=N3/8=0 3.2 栈的应用 3.2.1 数制转换 函数Convert()实现了求非负整数N的r进制表示的算法。 #define Maxn 100 void Convert(int N,int r) {int s[Maxn],top;//定义一个顺序栈 ?top=-1; //初始化栈,top指向栈顶 3.2 栈的应用 3.2.1 数制转换 while ( N ) {s[++top]=N % r; //余数入栈 N=N/r; //商作为被除数继续 } while (top=0) printf(“%d”, s[top--]); //余数出栈 } 3.1 栈 3.1.3 链接栈 top ^ top a b c d ^ 空栈 具有三个结点的非空栈 ^ 栈顶元素 栈底 3.1 栈 3.1.3 链接栈 struct node{char data; struct node * link;

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档