(数据结构模拟试卷9.docVIP

  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文档。上传文档
查看更多
(数据结构模拟试卷9

数据结构模拟试卷(9) 一、填空题 与链式存储结构相比,顺序存储结构的优点是 随机存取数据方便 设字符a、b、c、d、e 的权分别为23,29,14,19 和15,设计一棵Huffman树,则该Huffman树根结点的权为 100 。 3.设某二叉树的前序和中序序列均为ABCDE,则它的后序序列是 EDCBA 。 4.在排序过程中,每一趟都不能确定任何一个元素的最终位置,但能适用于链表排序的排序算法是 插入 排序 。 5.以数组Q[0..m]存放循环队列中的元素,变量rear和qulen分别指示循环队列中队尾元素的实际位置和当前队列中元素的个数,则队列第一个元素的实际位置是 (rear-qulen+m+1)%(m+1) 。 6.将长度分别为m,n的两个有序子表进行归并,至多需要比较 m+n-1 次。 7.设源串S=“bcdcdcb”,模式串P=“cdcb”,按KMP算法进行模式匹配,当“S2S3S4”=“P1P2P3”,而S5≠P4时,S5应与 P2 比较。 8.设序列{12,34,19,23,8,56},试建立表长为7的Hash表。Hash函数为H(key)=key MOD 7,用线性探测法解决冲突,则56冲突 3 次。 9.设n0,且有如下程序段: int i; i = n; while (i0) i=i/10; 则该程序的时间复杂性为___ O(log10n)________________。 10.假设以一维数组作为n阶对称矩阵A的存储空间,以行序为主序存储A的下三角,则元素A[9][7]的值存储在S[___52____]中。 二、求解图的最小生成树有哪些算法?这些算法各有什么特点?各适用于 什么情况?时间复杂性分别如何? Prim算法:假设N=(V,{E})是连通网,TE是N的最小生成树的边的集合。算法从U={u0}(u0∈V),TE={}开始,重复执行下述操作:在所有u∈U,v∈V-U的边(u, v) ∈E 中找一条代价最小的边(u0, v0)并入集合TE,同时v0并入U,直到U=V为止。此时TE中有n-1条边,则T=(V,{TE})为N的最小生成树。时间复杂度为O(n2),与边数无关,适合于求边稠密的网的最小生成树。 Kruskal算法从另一个途径求网的最小生成树。假设N=(V,{E})是连通网,则令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将该边加入到T中,否则舍去此边而选择下一条代价最小的边。依此类推,直到T中所有顶点都在同一个连通分量上为止。时间复杂度为O(eloge),与边数有关,适合于求边稀疏的网的最小生成树。 四、快速排序是稳定的吗?若不稳定,则举出一个不稳定的实例。 3 5 5 3 1 排序后结果:1 3 3 5 5 //统计字符串s中t的个数 #include stdio.h #include string.h /子串定位 int FindSubString(char s[],char t[], int pos) { int i=pos,j=0; int slen = strlen(s); int tlen = strlen(t); while(islen jtlen) { if(s[i]==t[j]) { i++; j++; } else { i= i-j+1; j = 0; } } if(j==tlen) return i-j; else return -1; } //主程序 void main() { char *s =abcdbcdefgbcdabcd; char *t = bcd; int pos = 0; int cnt = 0; while(posstrlen(s)) { pos = FindSubString(s,t,pos); if(pos != -1) { pos = pos +strlen(t); cnt++; } else break; } printf(%d,cnt); } 六、试编写一个算法将线性表L中的数据建立一棵二叉排序树。 typedef struct SqList { int* elem; int length; int listsize; } SqList; //二叉树结点 typedef struct BiTNode { int data; struct BiTN

文档评论(0)

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

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

1亿VIP精品文档

相关文档