【考研类试卷】计算机专业基础综合(数据结构)模拟试卷6及答案解析.doc
《【考研类试卷】计算机专业基础综合(数据结构)模拟试卷6及答案解析.doc》由会员分享,可在线阅读,更多相关《【考研类试卷】计算机专业基础综合(数据结构)模拟试卷6及答案解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、计算机专业基础综合(数据结构)模拟试卷 6及答案解析(总分:88.00,做题时间:90 分钟)一、单项选择题(总题数:23,分数:48.00)1.单项选择题 1-40小题。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。_2.若查找每个记录的概率均等,则在具有 n个记录的连续顺序文件中采用顺序查找法查找一个记录,其平均查找长度 ASL为( )。(分数:2.00)A.(n1)2B.n2C.(n+1)2D.n顺序查找法适用于查找顺序存储或链式存储的线性表,平均比较次数为( (1) ),二分法查找只适用于查找顺序存储的有序表,平均比较次数为( (2) )。在此假定 N为线性表中结点数,且每
2、次查找都是成功的。(分数:4.00)(1).(1)(分数:2.00)A.N+1B.2log 2 NC.log 2 ND.N2(2).(2)(分数:2.00)A.N+1B.2log 2 NC.log 2 ND.N23.适用于折半查找的表的存储方式及元素排列要求为( )。(分数:2.00)A.链接方式存储,元素无序B.链接方式存储,元素有序C.顺序方式存储,元素无序D.顺序方式存储,元素有序4.具有 12个关键字的有序表,折半查找的平均查找长度为( )。(分数:2.00)A.31B.4C.25D.55.折半查找的时间复杂性为( )。(分数:2.00)A.O(n 2 )B.O(n)C.O(nlog
3、2 n)D.O(log 2 n)6.当采用分块查找时,数据的组织方式为( )。(分数:2.00)A.数据分成若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必须有序,每块内最大(或最小)的数据组成索引块C.数据分成若干块,每块内数据有序,每块内最大(或最小)的数据组成索引块D.数据分成若干块,每块(除最后一块外)中数据个数需相同7.下面函数的功能是实现分块查找,空白处应该添加的内容是( )。 int BlkSearch(int*nz,int key,int block,int BLK,int len) int i; block=block1: if(lenlen)BLK=l
4、en; for(i=block*BLK;ilen)BLK=len; for(i=block*BLK;i(block+1)*BLK 否则将其插入第 i个集合 if(i1 | iidk)printf(”无第d 个集合n”,i);exit(0): if(i=1)first=0; first 指向第 i个集合在数据表的首址 else first=idai1+1; last=idai; last 是第 i个集合在数据表中的末址 for(j=first;j idAi;j-)t 查找失败,将 x插入数据表 Rj+1=Rj; 元素后移 Rj+1=x; 将 x插入到原第 i个集合最后一个元素之后 for(j=i
5、;jk;j+)idaj+; 修改索引表中各集合最后一个元素的下标 由于各集合元素个数不等,各块长度不等且块间无序,索引表中用数组表示,数组中元素值是各集合最后一个元素在数据表中的下标。按本算法插入(2,112)和(1,53),数据表前后状态如下: * 插入前,索引表中 a数组的内容是 3,6,12,插入后修改为 4,8,14。)解析:25.假设 K 1 ,,K n 是 n个关键词,试解答: (1)试用二叉查找树的插入算法建立一棵二叉查找树,即当关键词的插入次序为 K 1 ,K 2 ,K n 时,用算法建立一棵以 LLINKRLINK链接表示的二叉查找树。 (2)设计一个算法,打印出该二叉查找树
6、的嵌套括号表示结构。假定该二叉查找树的嵌套括号表示结构为 B(A,D(C,E)。(分数:2.00)_正确答案:(正确答案:(1)非递归建立二叉排序树,在二叉排序树上插入的结点都是叶子结点。 typedef struct node Elemtype data; struct node*LLINK,*RLINK; node*BiTree: void Create_BST(BiTree bst,datatype K,int n) 以存储在数组 K中的 n个关键字,建立一棵初始为空的二又排序树 int i: BiTree P,f: for(i=1;i=n;i+) p=bst:f=null; 在调用Cr
7、eate_BST时,bst=null while(P!=null) if(P-dataKi)f=P;P=p 一RLINK; f 是 P的双亲 else if(p 一dataKi)f=P;P=p 一LLINK; S=(BiTree)malloc(sizeof(BiNode);申请结点空间 s-data=Ki; s-LLINK=null ; s 一RLINK=null; if(f=null)bst:S; 根结点 else if(S-dataf-data)f-LLINK=S; 左子女 else f 一RLINK=s: 右子树根结点的值大于等于根结点的值 (2)本题要求输出遍历二叉排序树的嵌套括号表示
8、。其算法思想是,若二叉排序树非空,则输出根结点,再输出其左右子树。在输出其左右子树前,要输出左括号,在输出其右子树前要输出逗号,在输出其右子树后要输出右括号,在左右子树均空情况下,则不输出括号。 void Print(BiTree t) 以嵌套括号表示结构打印二叉排序树 if(t!=null) printf(t 一data); 打印根结点值 if(t 一LLINK |t 一LLINK); 左子女和右子女中至少有一个不空 printf(”(”);输出左括号 Print(t 一LLINK)i 输出左子树的嵌套括号表示 if(t 一RLINK)printf(”,”);若右子树不空,输出逗号 Prin
9、t(t 一RLINK); 输出右子树的嵌套括号表示 printf(”)”);输出右括号 )解析:26.写出在二叉排序树中删除一个结点的算法,使删除后仍为二又排序树。设删除结点由指针 p所指,其双亲结点由指针 f所指,并假设被删除结点是其双亲结点的右孩子。描述上述算法。(分数:2.00)_正确答案:(正确答案:void Delete(BSTree t,P) 在二叉排序树 t中,删除 f所结点的右孩子(由 P所指向) if(P 一lchild=null)f 一rchild=P 一rchild;free(P);p 无左子女 else 用 P左子树中的最大值代替 P结点的值 q=p 一lchild;s
10、=q; while(q 一rchild) s=q;q=q 一rchild; 查 P左子树中序序列最右结点 if(s=p 一lchild) p 左子树的根结点无右子女 p一data=s 一data;p 一lchild=s 一lchild;free(S); elsep 一data=q 一data;s 一rchild=q 一lchild;free(q); )解析:27.已知二叉树排序树中某结点指针 p,其双亲结点指针为 fp,p 为 fp的左孩子。试编写算法,删除 p所指结点。(分数:2.00)_正确答案:(正确答案:本题用被删结点右子树中最小值(中序遍历第一个)结点代替被删结点。 w)id Del
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 试卷 计算机专业 基础 综合 数据结构 模拟 答案 解析 DOC
