数据结构03知识讲解.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文档。上传文档
查看更多
数据结构03知识讲解.ppt

参考答案:D CDBAE CDBEA CDEBA 用某个10进制数转化为8进制的方法,推导出先产生的余数在结果中是最后的一位 由此一个非负的十进制整数转化为8进制的算法P48 栈的引入简化了程序 计算机解迷宫时,通常用的是“穷举求解”的方法,即从入口出发,顺某一方向向前探索,若能走通,则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。 文字算法P51 OPTR寄存运算符,OPND寄存操作数或运算结果 汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘。 共需移动2^n-1次。 阶乘函数 已知F(n)函数(n为自然数)的定义如下: int fact(int n) { if (n == 1 || n == 0) {return 1;} return n * fact(n – 1); } 演示 汉诺塔问题(Hanoi) 相传在印度的贝纳雷斯有座大寺庙,寺庙内有一块红木板,上面插着三根钻石棒,在盘古开天地,世界刚创造不久之时,神便在其中的一根钻石棒上放了64枚纯金的圆盘。有一个叫婆罗门的门徒,不分日夜地向这座寺庙赶路,抵达后,就尽力将64枚纯金的圆盘移到另一根钻石棒上,每一次只能移动一枚金盘,且每次移动必须仍然保持小盘在大盘的上面。据说等到婆罗门完成这项工作时,寺庙和婆罗门本身都崩溃了,世界在一声霹雳中也毁灭了。 汉诺塔问题 思考3个金盘的操作步骤,由此推广到N个金盘 N个金盘的操作过程 N-1个金盘从x到y 第N个金盘从x到z 将前N-1个金盘从y到z 需要一个辅助桩(y)完成移动操作 汉诺塔问题算法 void hanoi(int n,char x,char y,char z) { if(n==1) move(x,1,z); else {hanoi(n-1,x,z,y);//将1到n-1的盘从x移到y,z为辅助 move(x,n,z);//将编号为n的盘从x移到z hanoi(n-1,y,x,z);//将1到n-1的盘从y移到z,x为辅助 } } 3.4 队列 队列是只允许在一端进行插入,在另一端进行删除的限定性线性表 an … ai+1 … a2 a1 队头 队尾 出队列 (删除) 入队列(插入) 先进先出 演示 队列的存储方式 队列的存储方式有两种:用链表示的队列称为链队列。一个链队列需要两个分别指示队头和队尾的指针才能唯一确定 空的链队列的判决条件为头指针和尾指针均指向头结点 单链队列的插入和删除的操作只需修改尾指针或头指针 另一种存储方式为顺序存储 队列的链式存储结构 typedef struct QNode{ QElemType data; struct QNode *next; }QNode,*QueuePtr; typedef struct{ QueuePtr front;//队头指针 QueuePtr rear;//队尾指针 }LinkQueue; 队列的链式存储 ∧ Q.front Q.rear 队头 头结点 队尾 ∧ Q.front Q.rear 空队列 链队列空: Q.front = Q.rear Q.front Q.rear x y ∧ 删除x (P62) Q.front Q.rear x y ∧ 插入x (P62) Q.fornt Q.rear x ∧ ∧ Q.front Q.rear 进队列 Status EnQueue(LinkQueue Q,QElemType e){ //插入元素e为Q的新的队尾元素 p=(QueuePtr)malloc(sizeof(QNode));//为结点分配空间 if(!p) exit(OVERFLOW); p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; return OK; } 出队列 Status DeQueue(LinkQueue Q,QElemType e){ //若队列不空,则删除Q的队头元素,用e返回其值, //并返回OK,否则返回ERROR if(Q.front==Q.rear) return ERROR; p=Q.front-next;//指向头结点之后的结点 Q.front-next=p-next; if(Q.rear==p) Q.rear=Q.front; free(p); return OK

文档评论(0)

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

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

1亿VIP精品文档

相关文档