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