计算机考研数据结构统考历年真题答案2009-2015解析.doc

计算机考研数据结构统考历年真题答案2009-2015解析.doc

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

目前刚整理了2009-2015的试题 过几天2016的也会上传上去 希望对你有帮助。。。。。。。 答案与试题是配套的 选择题没有解析 有不懂得可以在文库上@我 2009 1-5:BCDBC 6-10:BADBA 41.该方法求得的路径不一定是最短路径。例如,对于下图所示的带权图,如果按照题中的原则,从A到C的最短路径为A→B→C,事实上其最短路径为??A→D→C。? 42.(1)算法的基本设计思想:定义两个指针变量p和q,初始时均指向头结点的下一个结点。P指针沿链表移动;当p指针移动到第k个结点时,q指针开始与p指针同步移动;当p指针移动到链表最后一个结点时,q指针所指元素为倒数第k个结点。以上过程对链表仅进行一遍扫描。 (2)算法的详细实现步骤: ①count=0,p和q指向链表表头结点的下一个结点; ②若p为空,转⑤; ③若count等于k,则q指向下一个结点;否则,count=count+1; ④p指向下一个结点,转步骤②; ⑤若count等于k,则查找成功,输出该结点的data域的值,返回1;返回; 查找失败,返回0; ⑥算法结束。(3)算法实现: typedef struct LNode{ int data; struct LNode * link; } * LinkList; int SearchN(LinkList list,int k){ LinkList p,q; int count=0; /*计数器赋初值*/ p=q=list-link; /*p和q指向链表表头结点的下一个结点*/ while(p!=NULL){ if(countk) count++; /*计数器+1*/ else q=q-link;/*q移到下一个结点*/ p=p-link; /*p移到下一个结点*/ } if(countk)return(0);/*如果链表的长度小于k,查找失败*/ else { printf(%d,q-data); /*查找成功*/ return (1);}//else}//SearchN 2010 1-5:DCDCB 6-11:ACBBDA 41.(1)构造的散列表如下 下标 0 1 2 3 4 5 6 7 8 9 关键字 7 14 8 11 30 18 9 BAABC 6-11:CCADAD 高分笔记 排序 最后一题 42.(1)算法思想:顺序遍历两个链表到尾结点时,并不能保证两个链表同时到达尾结点。这是因为两个链表的长度不同。假设一个链表比另一个链表长k个结点,我们先在长链表上遍历k个结点,之后同步遍历两个链表。这样我们就能够保证它们同时到达最后一个结点了。由于两个链表从第一个公共结点到链表的尾结点都是重合的。所以它们肯定同时到达第一个公共结点。于是得到算法思路:? ①遍历两个链表求的它们的长度L1,L2;? ②比较L1,L2,找出较长的链表,并求L=|L1-L2|; ③先遍历长链表的L各结点; ④同步遍历两个链表,直至找到相同结点或链表结束。 (2)算法的C语言代码描述? LinkList?Search_First_Common(LinkList?L1,LinkList?L2){ //本算法实现线性时间内找到两个单链表的第一个公共结点? int?len1=Length(L1),len2=Length(L2);? LinkList?longList,shortlist;//分别指向较长和较短的链表? if(len1len2){? longList=L1-next;? shortlist=L2-next;? L=len1-len2;//表长之差 }//if else{? longList=L2-next;? shortlist=L1-next;? L=len2-len1;//表长之差? }//else? While(L--)? longList=longList-next;? while(longList!=NULL){? if(longList==shortList)//同步寻找共同结点? return?longList;? else{? longList=longList-next;? shortlist=shortlist-next;? }?//else }//while? return?NULL;? }//Search_First_Common? (3)算法的时间

文档评论(0)

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

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

1亿VIP精品文档

相关文档