欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构作业(3).doc

    • 资源ID:23844728       资源大小:279.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构作业(3).doc

    【精品文档】如有侵权,请联系网站删除,仅供学习与交流第9章第10章第11章第12章第13章第14章第15章 数据结构作业(3).精品文档.第16章 检索的作业9.6 假定值A到H存储在一个自组织线性表中,开始按照升序存放。对于9.2小节建议的三种自组织启发式规则,按照下面顺序访问线性表,给出结果线性表和需要的比较总数。 D H H G H E G H G H E C E H G(1) 频率计数自组织线性表启发式规则: A B C D E F G H 比较次数D: D A B C E F G H 4H: D H A B C E F G 8H: H D A B C E F G 2G: H D G A B C E F 8H: H D G A B C E F 1E:H D G E A B C F 7G: H G D E A B C F 3H: H G D E A B C F 1G: H G D E A B C F 2H: H G D E A B C F 1E: H G E D A B C F 4C: H G E D C A B F 7E: H G E D C A B F 3H: H G E D C A B F 1G: H G E D C A B F 2比较总数=54(2)移至前端自组织线性表启发式规则: A B C D E F G H 比较次数D: D A B C E F G H 4H: H D A B C E F G 8H: H D A B C E F G 1G: G H D A B C E F 8H: H G D A B C E F 2E:E H G D A B C F 7G: G E H D A B C F 3H: H G E D A B C F 3G: G H E D A B C F 2H: H G E D A B C F 2E: E H G D A B C F 3C: C E H G D A B F 7E: E C H G D A B F 2H: H E C G D A B F 3G: G H E C D A B F 4比较总数=59(3)转置自组织线性表启发式规则: A B C D E F G H 比较次数D: A B D C E F G H 4H: A B D C E F H G 8H: A B D C E H F G 7G: A B D C E H G F 8H: A B D C H E G F 6E:A B D C E H G F 6G: A B D C E G H F 7H: A B D C E H G F 7G: A B D C E G H F 7H: A B D C E H G F 7E: A B D E C H G F 5C: A B D C E H G F 5E: A B D E C H G F 5H: A B D E H C G F 6G: A B D E H G C F 7比较总数=959.8 编写一个算法,实现频率计数自组织线性表启发式规则,假定线性表使用数组实现。特别是编写一个函数FreqCount,它把要检索的值作为输入,并且相应地调整线性表。如果值不在线性表中,就把它添加到线性表的最后,其频率计数是1。算法思想: 按顺序访问记录,每访问一条记录,该记录的访问数加1,如果该记录的访问数已经大于它前面记录的访问数,这条记录就在线性表中与前面的记录交换。伪代码: template <class Elem>void FreqCount(Elem A, int count) int n = 0; while (int val = GETNEXT() != DONE) for (i=0; i<n; i+) if (Ai = val) break; else if (i = n) An = val; countn+ = 1; else counti+; while (i > 0) && (counti > counti-1) swap(Ai, Ai-1); swap(counti, counti-1);9.9 编写一个算法,实现移至前端自组织线性表启发式规则,假定线性表使用数组实现。特别是编写一个函数MoveToFront,它把要检索的值作为输入,并且相应地调整线性表。如果值不在线性表中,就把它添加到线性表的开始位置。算法思想: 按顺序访问记录,每找到一个记录就把它放到线性表的最前面,而把其他记录后退一个位置。伪代码:template <class Elem>void MoveToFront(Elem A) int n = 0; while (int val = GETNEXT() != DONE) for (i=0; i<n; i+) if (Ai = val) break; if (i = n) An = val; while (i > 0) swap(Ai, A0);9.10 编写一个算法,实现转置自组织线性表启发式规则,假定线性表使用数组实现。特别是编写一个函数transpose,它把要检索的值作为输入,并且相应地调整线性表。如果值不在线性表中,就把它添加到线性表的最后。算法思想:按顺序访问记录,把找到的记录与它在线性表中的前一条记录交换位置。伪代码:template <class Elem>void tanspose(Elem A) int n = 0; while (int val = GETNEXT() != DONE) for (i=0; i<n; i+) if (Ai = val) break; if (i = n) An = val; While (i != 0) swap(Ai, Ai-1); * 设散列函数为h(K) = K mod 7, 闭散列表的地址空间为0, , 6, 开始时散列表为空, 用线性探查法解决冲突, 请画出依次插入键值23, 14, 9, 6, 30, 12, 18后的散列表。 h(23)=2 h(14)=0 h(9)=2 h(6)=6 h(30)=2 h(12)=5 h(18)=401411822339430512669.16 使用闭散列,利用双散列方法解决冲突,把下面的关键码插入到一个有13个槽的散列表中(槽从0到12编号)。使用的散列函数H1和H2在下面定义。给出插入8个关键码值后的散列表。一定要说明如何使用H1和H2进行散列。函数Rev(k)颠倒10进制数k各个位的数字,例如,Rev(37)=73,Rev(7)=7。H1(k)=k mod 13。H2(k)=(Rev(k+1) mod 11)。关键码:2,8,31,20,19,18,53,27H1(2)=2 H2(2)=3 放在位置2H1(8)=8 H2(8)=9 放在位置8H1(31)=5 H2(31)=1 放在位置5H1(20)=7 H2(20)=1 放在位置7H1(19)=6 H2(19)=2 放在位置6H1(18)=5 H2(18)=3 放在位置5,但位置5已经有数据,5+3=8,位 置8也有数据8+3=11,放在位置11H1(53)=1 H2(53)=1 放在位置53H1(27)=1 H2(27)=5 放在位置1,但位置1已经有数据,1+5=6,位 置6也有数据,6+5=11,位置11也有数据, 11+5=3,放在位置3015322327453161972088910111812第11章 图的作业11.3 (a)画出图11.26所示图的相邻矩阵表示。1 2 3 4 5 6 10 20 210 3 5 3 15 20 5 11 10 15 11 32 10 3123456 (b)画出这个图的邻接表表示。1 -> 2(10) -> 4(20) -> 6(2) -> 2 -> 1(10) -> 3(3) -> 4(5) -> 3 -> 2(3) -> 5(15) -> 4 -> 1(20) -> 2(5) -> 5(11) -> 6(10) -> 5 -> 3(15) -> 4(11) -> 6(3) -> 6 -> 1(2) -> 4(10) -> 5(3) -> 11.4 对于图11.26所示的图,给出从顶点1开始DFS树。42163511.5 对于图11.26所示的图,给出从顶点1开始BFS树42163511.8 对于图11.26中的图,给出从顶点4出发,使用Dijkstra最短路径算法产生的最短路径表。请像图11.18所示那样,每处理一个顶点时给出相应D值。123456初始0处理420501110处理2155801110处理3155801110处理5155801110处理6155801110处理1155801110顶点4到顶点1的最短路径为15;顶点4到顶点2的最短路径为5;顶点4到顶点3的最短路径为8;顶点4到顶点4的最短路径为0;顶点4到顶点5的最短路径为11;顶点4到顶点6的最短路径为10。11.12 编写一个算法确定一个有|V|个顶点的有向图是否包含回路。算法的时间代价应该是(|V|+|E|)。算法思想:用广度优先拓扑排序的方法,首先访问所有的边,计算指向每个顶点的边数,将所有没有先决条件的顶点放入队列,然后开始处理队列,当从队列中删除一个顶点时,把它打印出来,同时将其所有相邻顶点的先决条件计数减1,当某个相邻顶点的计数为0时,就将其放入队列,如果还有顶点未被打印,而队列已经为空,则图中包含回路。伪代码:void topsort (Graph*G,Queue) int Count G->n(); int v,w; for (v=0;v<G->n();v+) Countv=0; for (v=0;v<G->n();v+)for (w=G->first(v); w<G->n; w=G->next(v,w) Countw+; for (v=0;v<G->n();v+)if (Countv=0;) Q->enqueue(v); while (Q->length()!=0) Q->dequeue(v);printout(v);for (w=G->first(v); w<G->n(); w=G->next(v,w) Countw-; if (Countw=0) Q->enqueue(w);11.13 编写一个算法确定一个有|V|个顶点的无向图是否包含回路。算法的时间代价应该是(|V|)。算法思想:用深度优先搜索的方法,如果遇到已经访问过的结点,则说明该无向图包含回路。伪代码:void DFS(int map, int a, int dep) if(dep>1 && a = v) Printout("有环路"); return; for(i=0;i<N;i+) if(mapai = 1) DFS(map, i, dep+); void main() DFS(map, v, 1);11.15 对于图11.26所示的图,给出使用Floyd的每对顶点间最短路径算法的结果。0-path1 2 3 4 5 6 0 10 20 210 0 3 5 3 0 15 20 5 0 11 10 15 11 0 3 2 10 3 01234561-path1 2 3 4 5 6 0 10 20 210 0 3 5 12 3 0 15 20 5 0 11 10 15 11 0 3 2 12 10 3 01234562-path1 2 3 4 5 6 0 10 13 15 210 0 3 5 1213 3 0 8 15 1515 5 8 0 11 10 15 11 0 3 2 12 15 10 3 01234563-path1 2 3 4 5 6 0 10 13 15 28 210 0 3 5 18 1213 3 0 8 15 1515 5 8 0 11 1028 18 15 11 0 3 2 12 15 10 3 01234564-path1 2 3 4 5 6 0 10 13 15 26 210 0 3 5 16 1213 3 0 8 15 1515 5 8 0 11 1026 16 15 11 0 3 2 12 15 10 3 012345651 2 3 4 5 6-path 0 10 13 15 26 210 0 3 5 16 1213 3 0 8 15 1515 5 8 0 11 1026 16 15 11 0 3 2 12 15 10 3 01234561 2 3 4 5 66-path 0 10 13 12 5 210 0 3 5 16 1213 3 0 8 15 1512 5 8 0 11 10 5 16 15 11 0 3 2 12 15 10 3 012345611.18 对于图11.26中的图,给出从顶点3开始使用Prim的MST算法时各个边的访问顺序,并给出最终的MST。各个边的访问顺序:(3,2)(2,4)(2,1)(1,6)(6,5)最终MST:42163511.19 对于图11.26中的图,给出使用Kauskal的MST算法时各个边的访问顺序,每当把一条边添加到MST时,等价类数组的结果是什么(如图6.7那样显示数组内容)?165432 初始状态234561处理边(1,6)45261处理边(2,3)34261处理边(5,6)534261处理边(2,4)5342 处理边(1,2)1635等价类数组结果: 1 2 3 4 5 6初始状态 -1 -1 -1 -1 -1 -1处理边(1,6) -1 -1 -1 -1 -1 1处理边(2,3) -1 -1 2 -1 -1 1处理边(5,6) -1 -1 2 -1 1 1处理边(2,4) -1 1 2 -1 1 1处理边(1,2) -1 1 2 1 1 1

    注意事项

    本文(数据结构作业(3).doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开