数据结构考试题(二)

上传人:豆浆 文档编号:780859 上传时间:2017-05-14 格式:DOCX 页数:22 大小:42.33KB
返回 下载 相关 举报
数据结构考试题(二)_第1页
第1页 / 共22页
数据结构考试题(二)_第2页
第2页 / 共22页
数据结构考试题(二)_第3页
第3页 / 共22页
数据结构考试题(二)_第4页
第4页 / 共22页
数据结构考试题(二)_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《数据结构考试题(二)》由会员分享,可在线阅读,更多相关《数据结构考试题(二)(22页珍藏版)》请在金锄头文库上搜索。

1、数据结构试卷(一)一、选择题(30 分)1设一维数组中有 n 个数组元素,则读取第 i 个数组元素的平均时间复杂度为( ) 。(A) O(n) (B) O(nlog2n) (C) O(1) (D) O(n2)2设一棵二叉树的深度为 k,则该二叉树中最多有( )个结点。(A) 2k-1 (B) 2k (C) 2k-1 (D) 2k-13设某无向图中有 n 个顶点 e 条边,则该无向图中所有顶点的入度之和为( ) 。(A) n (B) e (C) 2n (D) 2e4在二叉排序树中插入一个结点的时间复杂度为( ) 。(A) O(1) (B) O(n) (C) O(log2n) (D) O(n2)5

2、设某有向图的邻接表中有 n 个表头结点和 m 个表结点,则该图中有( )条有向边。(A) n (B) n-1 (C) m (D) m-16设一组初始记录关键字序列为(345 ,253 ,674,924,627) ,则用基数排序需要进行( )趟的分配和回收才能使得初始关键字序列变成有序序列。(A) 3 (B) 4 (C) 5 (D) 87设用链表作为栈的存储结构则退栈操作( ) 。(A) 必须判别栈是否为满 (B) 必须判别栈是否为空(C) 判别栈元素的类型 (D) 对栈不作任何判别8下列四种排序中( )的空间复杂度最大。(A) 快速排序 (B) 冒泡排序 (C) 希尔排序 (D) 堆9设某二叉

3、树中度数为 0 的结点数为 N0,度数为 1 的结点数为 Nl,度数为 2 的结点数为N2,则下列等式成立的是( ) 。(A) N0=N1+1 (B) N0=Nl+N2 (C) N0=N2+1 (D) N0=2N1+l10.设有序顺序表中有 n 个数据元素,则利用二分查找法查找数据元素 X 的最多比较次数不超过( ) 。(A) log2n+1 (B) log2n-1 (C) log2n (D) log2(n+1)二、填空题(42 分)1 1 设有 n 个无序的记录关键字,则直接插入排序的时间复杂度为_,快速排序的平均时间复杂度为_。2 2 设指针变量 p 指向双向循环链表中的结点 X,则删除结

4、点 X 需要执行的语句序列为_(设结点中的两个指针域分别为 llink 和 rlink) 。3 3 根据初始关键字序列 (19,22,01,38,10)建立的二叉排序树的高度为_。4 4 深度为 k 的完全二叉树中最少有_ 个结点。5 5 设初始记录关键字序列为(K 1,K 2,K n),则用筛选法思想建堆必须从第_个元素开始进行筛选。6 6 设哈夫曼树中共有 99 个结点,则该树中有_个叶子结点;若采用二叉链表作为存储结构,则该树中有_个空指针域。7 7 设有一个顺序循环队列中有 M 个存储单元,则该循环队列中最多能够存储_个队列元素;当前实际存储_个队列元素(设头指针 F 指向当前队头元素

5、的前一个位置,尾指针指向当前队尾元素的位置) 。8 8 设顺序线性表中有 n 个数据元素,则第 i 个位置上插入一个数据元素需要移动表中_个数据元素;删除第 i 个位置上的数据元素需要移动表中_ 个元素。9 9 设一组初始记录关键字序列为(20 ,18,22,16,30,19),则以 20 为中轴的一趟快速排序结果为_。10 10设一组初始记录关键字序列为(20,18 ,22,16,30 ,19),则根据这些初始关键字序列建成的初始堆为_。11 11设某无向图 G 中有 n 个顶点,用邻接矩阵 A 作为该图的存储结构,则顶点 i和顶点 j 互为邻接点的条件是_。12 12设无向图对应的邻接矩阵

6、为 A,则 A 中第 i 上非 0 元素的个数_第 i列上非 0 元素的个数(填等于,大于或小于) 。13 13设前序遍历某二叉树的序列为 ABCD,中序遍历该二叉树的序列为 BADC,则后序遍历该二叉树的序列为_。14 14设散列函数 H(k)=k mod p,解决冲突的方法为链地址法。要求在下列算法划线处填上正确的语句完成在散列表 hashtalbe 中查找关键字值等于 k 的结点,成功时返回指向关键字的指针,不成功时返回标志 0。typedef struct node int key; struct node *next; lklist; void createlkhash(lklist

7、 *hashtable )int i,k; lklist *s;for(i=0;ikey=ai;k=ai % p; s-next=hashtablek;_;三、算法设计题(28 分)1 1 设单链表中有仅三类字符的数据元素( 大写字母、数字和其它字符),要求利用原单链表中结点空间设计出三个单链表的算法,使每个单链表只包含同类字符。1. 2. 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。2. 3. 在链式存储结构上建立一棵二叉排序树。数据结构试卷(一)参考答案一、选择题1 C 2D 3D 4B 5C6 A 7B 8A 9C 10A二、填空题1. 1. O(n2),O(nlog 2n)

8、2. 2. pllink-rlink=p-rlink; p-rlink-llink=p-rlink3. 3. 34. 4. 2k-15. 5. n/26. 6. 50,517. 7. m-1,(R-F+M)%M8. 8. n+1-i, n-i9. 9. (19,18,16 ,20,30,22)10. 10. (16,18 ,19,20,32,22)11. 11. Aij=112. 12. 等于13. 13. BDCA14. 14. hashtablei=0,hashtablek=s三、算法设计题1. 1. 设单链表中有仅三类字符的数据元素( 大写字母、数字和其它字符),要求利用原单链表中结点空

9、间设计出三个单链表的算法,使每个单链表只包含同类字符。typedef char datatype;typedef struct node datatype data; struct node *next;lklist;void split(lklist *head,lklist *&ha,lklist *&hb,lklist *&hc)lklist *p; ha=0,hb=0,hc=0;for(p=head;p!=0;p=head)head=p-next; p-next=0;if (p-data=A & p-datanext=ha; ha=p;else if (p-data=0 & p-dat

10、anext=hb; hb=p; else p-next=hc; hc=p;2. 2. 设计在链式存储结构上交换二叉树中所有结点左右子树的算法。typedef struct node int data; struct node *lchild,*rchild; bitree;void swapbitree(bitree *bt)bitree *p;if(bt=0) return;swapbitree(bt-lchild); swapbitree(bt-rchild);p=bt-lchild; bt-lchild=bt-rchild; bt-rchild=p;3. 3. 在链式存储结构上建立一棵二

11、叉排序树。#define n 10typedef struct nodeint key; struct node *lchild,*rchild;bitree;void bstinsert(bitree *&bt,int key)if (bt=0)bt=(bitree *)malloc(sizeof(bitree); bt-key=key;bt-lchild=bt-rchild=0;else if (bt-keykey) bstinsert(bt-lchild,key); else bstinsert(bt-rchild,key);void createbsttree(bitree *&bt)

12、int i;for(i=1;irj+1)temp=rj+1;_;rj=temp;exchange=1;if (exchange=0) return;10. 10. 下面程序段的功能是实现二分查找算法,请在下划线处填上正确的语句。struct recordint key; int others;int bisearch(struct record r , int k)int low=0,mid,high=n-1;while(lowk三、应用题1. 1. DEBCA2. 2. E=(1,5),(5,2),(5,3),(3,4),W=103. 3. ASL=(1*1+2*2+3*4)/7=17/74

13、. 4. ASL1=7/6,ASL2=4/3四、算法设计题1. 1. 设计判断两个二叉树是否相同的算法。typedef struct node datatype data; struct node *lchild,*rchild; bitree;int judgebitree(bitree *bt1,bitree *bt2)if (bt1=0 & bt2=0) return(1);else if (bt1=0 | bt2=0 |bt1-data!=bt2-data) return(0); else return(judgebitree(bt1-lchild,bt2-lchild)*judgeb

14、itree(bt1-rchild,bt2-rchild);2. 2. 设计两个有序单链表的合并排序算法。void mergelklist(lklist *ha,lklist *hb,lklist *&hc)lklist *s=hc=0;while(ha!=0 & hb!=0)if(ha-datadata)if(s=0) hc=s=ha; else s-next=ha; s=ha;ha=ha-next;else if(s=0) hc=s=hb; else s-next=hb; s=hb;hb=hb-next;if(ha=0) s-next=hb; else s-next=ha;数据结构试卷(三)一、选择题(30 分)1 设一组权值集合 W=2,3,4 ,5,6 ,则由该权值集合构造的哈夫曼树中带权路径长度之和为( ) 。(A) 20 (B) 30 (C) 40

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号