数据结构模拟题十套.docx
- 文档编号:30242852
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:64
- 大小:586.85KB
数据结构模拟题十套.docx
《数据结构模拟题十套.docx》由会员分享,可在线阅读,更多相关《数据结构模拟题十套.docx(64页珍藏版)》请在冰豆网上搜索。
数据结构模拟题十套
数据结构试卷
(一)
(A)数据项
(B)数据类型
(C)数据兀素
(D)数据变量
2.
设数据结构
A=(D,R),其中D={1
2,3,4},R={r},
r={<1,2>,<2,3>,<3,
数据结构A是()。
(A)线性结构(B)树型结构
(C)图型结构
(D)集合
3.
数组的逻辑结构不同于下列()
的逻辑结构。
(A)线性表
(B)栈
(C)队列
(D)树
4.
二叉树中第
i(i>1)层上的结点数最多有()个。
(A)2i
(B)21
(C)2i-1
(D)2i-1
5.
设指针变量
p指向单链表结点A,
则删除结点A的后继结点B需要的操作为()
)。
4>,<4,1>},则
O
一、选择题(20分)
1•组成数据的基本单位是(
(A)
(B)p=p->next
(D)p_>next=p
E1、E2、E3E4、E5和E6依次通过栈
p->next=p->next->next
S,—个元素出栈后即
(C)p=p->next->next
6.设栈S和队列Q的初始状态为空,元素
进入队列Q,若6个元素出列的顺序为E2、E4E3、E6E5和E1,则栈S的容量至少应该是(
(A)6(B)4(C)3(D)2
7•将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。
(A)100(B)40(C)55(D)80
8.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为()。
(A)3(B)4(C)5(D)1
9•根据二叉树的定义可知二叉树共有()种不同的形态。
(A)4(B)5(C)6(D)7
10.设有以下四种排序方法,则()的空间复杂度最大。
(A)冒泡排序
(B)快速排序
(C)堆排序
(D)希尔排序
、
选择题
1.C
2.C
3.D
4.C
5.A
6.C
7.C
8.B
9.B
10.B
二、填空题(30分)
1.设顺序循环队列Q[0:
m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元
素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F=;。
2.设线性表中有n个数据元素,则在顺序存储结构上实现顺序查找的平均时间复杂度为,
在链式存储结构上实现顺序查找的平均时间复杂度为。
3.设一棵二叉树中有n个结点,则当用二叉链表作为其存储结构时,该二叉链表中共有个指
针域,个空指针域。
4.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B
的操作序列为。
5.设无向图G中有n个顶点和e条边,则其对应的邻接表中有个表头结点和个表
结点。
6.设无向图G中有n个顶点e条边,所有顶点的度数之和为m贝Ue和m有关系。
7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC则该二叉树的后序遍历序列为。
号为8的双亲结点的编号是,编号为8的左孩子结点的编号是
9.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句。
intindex(chars[],chart[])
{
i=j=O;
while(i if(j==strlen(t))return(i-strlen(t));elsereturn(-1); } 设一个连通图G中有n个顶点e条边,则其最小生成树上有条边。 、 填空题 10. (F+1)%m 11. 0(n),0(n) 12. 2n,n+1 13. s->next=p->next;s->next=s 14. n,2e 15. m=2e 16. CBA 17. 4,16 18. i-j+1,0 19. n-1 20. 三、应用题(30分) 1.设完全二叉树的顺序存储结构中存储数据ABCDE要求给出该二叉树的链式存储结构并给出该二叉树 的前序、中序和后序遍历序列。 2.设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫 曼树的带权路径长度WPL 3 .设一组初始记录关键字序列为(19,21,16,5,18,23),要求给出以19 为基准的一趟快速排序结果以及第2趟直接选择排序后的结果。 4.设一组初始记录关键字集合为(25,10,8,27,32,68),散列表的长度为 8,散列函数H(k)=kmod7,要求分别用线性探测和链地址法作为解决冲突的方法设计哈希表。 5•设无向图G(所右图所示),要求给出该图的深度优先和广度优先遍历的序列并给出该图的最小生成树。 三、应用题 1.链式存储结构略,前序ABDEC中序DBEAC后序DEBCA 2.哈夫曼树略,WPL=78 3.(18,5,16,19,21,23),(5,16,21,19,18,23) 4. ho 四、算法设计题(20分) 1.设计判断单链表中结点是否关于中心对称算法。 2.设计在链式存储结构上建立一棵二叉树的算法。 3.设计判断一棵二叉树是否是二叉排序树的算法。 四、算法设计题 1.设计判断单链表中结点是否关于中心对称算法。 typedefstruct{ints[100];inttop;}sqstack; intlklistsymmetry(lklist*head) { sqstackstack;stack.top=-1;lklist*p; for(p=head;p! =0;p=p->next){stack.top++;stack.s[stack.top]=p->data;} for(p=head;p! =0;p=p->next)if(p->data==stack.s[stack.top])stack.top=stack.top-1;elsereturn(0);return (1); } 2.设计在链式存储结构上建立一棵二叉树的算法。 typedefchardatatype; typedefstructnode{datatypedata;structnode*lchild,*rchild;}bitree; voidcreatebitree(bitree*&bt) { charch;scanf("%c",&ch); if(ch=='#'){bt=0;return;} bt=(bitree*)malloc(sizeof(bitree));bt->data=ch; createbitree(bt->lchild);createbitree(bt->rchild); } 3.设计判断一棵二叉树是否是二叉排序树的算法。 intminnum=-32768,flag=1; typedefstructnode{intkey;structnode*lchild,*rchild;}bitree; voidinorder(bitree*bt) { if(bt! =0) {inorder(bt->lchild);if(minnum>bt->key)flag=0;minnum=bt->key;inorder(bt->rchild);} 数据结构试卷 (一)参考答案 数据结构试卷 (二) 、选择题(24分) 1•下面关于线性表的叙述错误的是()。 (A)线性表采用顺序存储必须占用一片连续的存储空间 (B)线性表采用链式存储不必占用一片连续的存储空间 (C)线性表采用链式存储便于插入和删除操作的实现 (D)线性表采用顺序存储便于插入和删除操作的实现 2•设哈夫曼树中的叶子结点总数为m若用二叉链表作为存储结构,则该哈夫曼树中总共有()个空 指针域。 (A)2m-1(B)2m(C)2m+1(D)4m 3•设顺序循环队列Q[0: M-1]的头指针和尾指针分别为F和R,头指针F总是指向队头元素的前一位置, 尾指针R总是指向队尾元素的当前位置,则该循环队列中的元素个数为()。 (A)n-1(B)n(C)n+1(D)2n-1 8. 5为基准进行一趟快速排序的结 设一组初始记录关键字序列(5,2,6,3,8),以第一个记录关键字 果为()。 (B)3,2,5,8,6 (D)2,3,6,5,8 (A)2,3,5,8,6 (C)3,2,5,6,8 二、填空题(24分) 1.为了能有效地应用HASH查找技术,必须解决的两个问题是和 。 设某棵二叉树中度数为0的结点数为Nb,度数为1的结点数为N,则该二叉树中度数为2的结点数 为;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有个空指针域。 设某无向图中顶点数和边数分别为n和e,所有顶点的度数之和为d,则e=。 设一组初始记录关键字序列为(55,63,44,38,75,80,31,56),则利用筛选法建立的初始堆为 v1—兮3—占2—亏4 v2—>1—>3 设某无向图G的邻接表为,则从顶点V1开始的深度优先遍历序列为 V3—>1-=4一>2 v4—^'1—占3 广度优先遍历序列为。 应用题(36分) 设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4 趟直接插入排序后的结果。 设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入 结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。 设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找, 要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。 设一棵树T中边的集合为{(A,B),(A,C),(A,D),(B,E),(C,F),(C, G)},要求用孩子兄弟表示法(二叉链表)表示出该树的存储结构并将该树转化成对应的二叉树。 设有无向图G(如右图所示),要求给出用普里姆算法构造最小生成树所走过的边的集合。 设有一组初始记录关键字为(45,80,48,40,22,78),要求构造一棵二 叉排序树并给出构造过程。 算法设计题(16分) 设有一组初始记录关键字序列(K1,&,•••,Kn),要求设计一个算法能够在0(n)的时间复杂度内将 线性表划分成两部分,其中左半部分的每个关键字均小于K,右半部分的每个关键字均大于等于K。 设有两个集合A和集合B,要求设计生成集合C=A? B的算法,其中集合AB和C用链式存储结构 5. 6. 7. 8. 三、 1. 2. 3. 4. 5. 6. 四、 1. 2. 表示。 1.D 、 1. 2. 3. 4. 5. 6. 7. 8. 三、 1. 2. 3. 4. 5. 6. 四、 1. 2. 数据结构试卷 (二)参考答案 选择题 2.B3.C4.A5.A6.C7.B8.C 填空题 构造一个好的HASH函数,确定解决冲突的方法 stack.top++,stack.s[stack.top]=x 有序 2 O(n),0(nlog2n) N)-1,2Nd+N d/2 (31,38,54,56,75,80,55,63) (1,3,4,2),(1,3,2,4) 应用题 (22,40,45,48,80,78),(40,45,48,80,22,78) q->llink=p;q->rlink=p->rlink;p->rlink->llink=q;p->rlink=q; 2,ASL=91*1+2*2+3*4+4*2)=25/9 树的链式存储结构略,二叉树略 E={(1,3),(1,2),(3,5),(5,6),(6,4)} 略 算法设计题 设有一组初始记录关键字序列(K1,K2,…,Kn),要求设计一个算法能够在O(n)的时间复杂度内将 线性表划分成两部分,其中左半部分的每个关键字均小于K,右半部分的每个关键字均大于等于K。 voidquickpass(intr[],ints,intt) { inti=s,j=t,x=r[s]; while(i while(i while(i } r[i]=x; } 设有两个集合A和集合B,要求设计生成集合C=AAB的算法,其中集合AB和C用链式存储结构 表示。 typedefstructnode{intdata;structnode*next;}lklist; voidintersection(lklist*ha,lklist*hb,lklist*&hc) { lklist*p,*q,*t; for(p=ha,hc=0;p! =0;p=p->next) {for(q=hb;q! =0;q=q_>next)if(q->data==p->data)break; if(q! =0){t=(lklist*)malloc(sizeof(lklist));t->data=p->data;t->next=hc;hc=t;} } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 、 1. 2. 3. 4. 5. 6. 7. 数据结构试卷(三) 选择题(30分) 设某数据结构的二元组形式表示为A=(D,R),D={01,02,03,04,05,06,07,08,09}, r={<01,02>,<01,03>,<01,04>,<02,05>,<02,06>,<03,07>,<03,08>,<03,则数据结构A是()。 (A)线性结构(B) 下面程序的时间复杂为( for(i=1,s=0;i<=n; (A)0(n) 树型结构 ) i++) 2 (C)物理结构 (D)图型结构 (B)O(n) {t=1 设指针变量p指向单链表中结点 p->data=q->dataq->data=p->datap_>next=q_>nextp->data=q->data (A)q=p->next (B)q=p->next (C)q=p->next (D)q=p->next ;for(j=1;j<=i; 3 (C)O(n) 若删除单链表中结点 p_>next=q_>nextp_>next=q_>nextfree(q);free(q); j++)t=t*j;s=s+t;} 4 (D)O(n) A,则需要修改指针的操作序列为( free(q); free(q); R={r}, 09>}, 设有n个待排序的记录关键字,则在堆排序中需要( (A)1(B)n 设一组初始关键字记录关键字为 速排序结束后的结果为 )个辅助记录单元。 2 (D)n 21,36,40,10),则以20为基准记录的一趟快 (A)n,e(B)e,n(C)2n,e(D)n,2e 设某强连通图中有n个顶点,则该强连通图中至少有()条边。 (A)n(n-1)(B)n+1(C)n(D)n(n+1) 10个记录关键字,则用 设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的下列()方法可以达到此目的。 (A)快速排序(B)堆排序(C)归并排序(D)插入排序 下列四种排序中()的空间复杂度最大。 (A)插入排序(B)冒泡排序(C)堆排序(D)归并排序 填空殖(48分,其中最后两小题各6分) 数据的物理结构主要包括和两种情况。 设一棵完全二叉树中有500个结点,则该二叉树的深度为;若用二叉链表作为该完全二 叉树的存储结构,则共有个空指针域。 设输入序列为1、2、3,则经过栈的作用后可以得到种不同的输出序列。 设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i 的,第i列上所有元素之和等于顶点i的。 设哈夫曼树中共有n个结点,则该哈夫曼树中有个度数为1的结点。 设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为。 遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。 8.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较次就 可以断定数据元素X是否在查找表中。 9.不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为 10.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的 双亲结点编号为,右孩子结点的编号为。 11.设一组初始记录关键字为(72,73,71,23,94,16,5),则以记录关键字72为基准的一趟快速排 序结果为。 12.设有向图G中有向边的集合E={<1,2>,<2,3>,<1,4>,<4,2>,<4,3>},则该图的一种拓扑 序列为。 13.下列算法实现在顺序散列表中查找值为x的关键字,请在下划线处填上正确的语句。 structrecord{intkey;intothers;}; inthashsqsearch(structrecordhashtable[],intk) { inti,j;j=i=k%p; while(hashtable[j].key! =k&&hashtable[j].flag! =0){j=()%m;if(i==j)return(-1);} if()return(j);elsereturn(-1); } 14.下列算法实现在二叉排序树上查找关键值k,请在下划线处填上正确的语句。 typedefstructnode{intkey;structnode*lchild;structnode*rchild;}bitree; bitree*bstsearch(bitree*t,intk) { if(t==0)return(0);elsewhile(t! =0) if(t->key==k);elseif(t->key>k)t=t->lchild;else; } 三、算法设计题(22分) 1.设计在单链表中删除值相同的多余结点的算法。 2.设计一个求结点x在二叉树中的双亲结点算法。 数据结构试卷(三)参考答案 、选择题 q指向结点A的后继结点B,然后将结点B的值复制到结点A中, 最后删除结点B。 第9小题分析: 9快速排序、归并排序和插入排序必须等到整个排序结束后才能够求出最小的10个 数,而堆排序只需要在初始堆的基础上再进行10次筛选即可,每次筛选的时间复杂度为O(log2n)。 二、填空题 1.顺序存储结构、链式存储结构 2.9,501 3.5 4.出度,入度 5.0 6.e=d 7.中序 8.7 9.O (1) 10.i/2,2i+1 11.(5,16,71,23,72,94,73) 12.(1,4,3,2) 13.j+1,hashtable[j].key==k 14.return(t),t=t->rchild 第8小题分析: 二分查找的过程可以用一棵二叉树来描述,该二叉树称为二叉判定树。 在有序表上 进行二分查找时的查找长度不超过二叉判定树的高度1+log2n。 三、算法设计题 1.设计在单链表中删除值相同的多余结点的算法。 typedefintdatatype; typedefstructnode{datatypedata;structnode*next;}lklist; voiddelredundant(lklist*&head) { lklist*p,*q,*s; for(p=head;p! =0;p=p->next) { for(q=p->next,s=q;q! =0;) if(q->data==p->data){s->next=q_>next;free(q);q=s->next;}else{s=q,q=q_>next;} } } 2.设计一个求结点x在二叉树中的双亲结点算法。 typedefstructnode{datatypedata;structnode*lchild,*rchild;}bitree;bitree*q[20];intr=0,f=0,flag=0; voidpreorder(bitree*bt,charx) if(bt! =O&&flag==O) if(bt->data==x){flag=1;return;} else{r=(r+1)%20;q[r]=bt;preorder(bt->lchild,x);preorder(bt->rchild,x);}} voidparent(bitree*bt,charx) { inti; preorder(bt,x); for(i=f+1;i<=r;i++)if(q[i]->lchild->data==x||q[i]->rchild->data)break; if(flag==0)printf(”notfoundx\n"); elseif(i<=r)printf("%c",bt->data);elseprintf("notparent"); } 数据结构试卷(四) 一、选择题(30分) 1•设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。 2 (A)O(n)(B)O(nlog2n)(C)0 (1)(D)O(n) 2•设一棵二叉树的深度为k,则该二
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 模拟 题十套