1、数据结构模拟题十套数据结构试卷(一)一、选择题( 20 分)1构成数据的基本单位是()。(A)数据项(B)数据种类(C)数据元素(D)数据变量2设数据结构 A=(D, R),此中 D=1 , 2, 3, 4 , R=r,r=, , , ,则数据结构 A 是()。(A)线性结构(B)树型结构(C)图型结构(D)会合3数组的逻辑结构不一样于以下()的逻辑结构。(A)线性表(B)栈(C)行列(D)树4二叉树中第 i(i 1) 层上的结点数最多有()个。(A) 2i(B) 2i(C) 2 i-1(D) 2i-15设指针变量 p 指向单链表结点A,则删除结点 A 的后继结点 B 需要的操作为()。(A)
2、 p-next=p-next-next(B)p=p-next(C) p=p-next-next(D)p-next=p6设栈 S 和行列 Q的初始状态为空,元素E1、E2、E3、E4、 E5 和 E6 挨次经过栈 S,一个元素出栈后即进入行列 Q,若 6 个元素出列的次序为E2、 E4、 E3、 E6、 E5 和 E1,则栈 S 的容量起码应当是()。(A) 6(B) 4(C) 3(D) 27将 10 阶对称矩阵压缩储存到一维数组A 中,则数组A 的长度最少为()。(A) 100(B) 40(C) 55(D) 808设结点 A 有 3 个兄弟结点且结点B 为结点 A 的双亲结点,则结点 B 的度
3、数数为()。(A) 3(B) 4(C) 5(D) 19依据二叉树的定义可知二叉树共有()种不一样的形态。(A) 4(B) 5(C) 6(D) 710. 设有以下四种排序方法,则()的空间复杂度最大。(A)冒泡排序(B)迅速排序(C)堆排序(D)希尔排序一、选择题1.C2.C3.D4.C5.A6.C7.C8.B9.B10.B二、填空题 (30 分 )1.设次序循环行列 Q0: m-1 的队头指针和队尾指针分别为F 和 R,此中队头指针F 指向目前队头元素的前一个地点, 队尾指针 R 指向目前队尾元素所在的地点,则出行列的语句为F =_; 。2.设线性表中有 n 个数据元素, 则在次序储存结构上实
4、现次序查找的均匀时间复杂度为_,在链式储存结构上实现次序查找的均匀时间复杂度为_。3.设一棵二叉树中有 n 个结点,则当用二叉链表作为其储存结构时,该二叉链表中共有_个指针域, _ 个空指针域。4.设指针变量 p 指向单链表中结点 A,指针变量 s 指向被插入的结点 B,则在结点 A 的后边插入结点 B的操作序列为 _ 。5.设无向图 G中有 n 个极点和 e 条边,则其对应的毗邻表中有_个表头结点和 _个表结点。6.设无向图 G中有 n 个极点 e 条边,全部极点的度数之和为m,则 e 和 m有 _关系。7.设一棵二叉树的前序遍历序列和中序遍历序列均为ABC,则该二叉树的后序遍历序列为 _。
5、8.设一棵完整二叉树中有 21个结点,假如依据从上到下、从左到右的次序从1 开始次序编号,则编号为 8 的双亲结点的编号是_,编号为 8 的左孩子结点的编号是_。9.以下程序段的功能实现子串t 在主串 s 中地点的算法,要求在下划线处填上正确语句。int index(char s , char t )i=j=0;while(istrlen(s) & jnext=p-next; s-next=s14.n, 2e15.m=2e16.CBA17.4,1618.i-j+1 , 019.n-120.三、应用题( 30 分)1设完整二叉树的次序储存结构中储存数据 ABCDE,要求给出该二叉树的链式储存结构
6、并给出该二叉树的前序、中序和后序遍历序列。2设给定一个权值会合 W=(3, 5, 7, 9, 11) ,要求依据给定的权值会合结构一棵哈夫曼树并计算哈夫曼树的带权路径长度 WPL。3设一组初始记录重点字序列为为基准的一趟迅速排序结果以及第(19 , 21, 16, 5, 18, 23) ,要求给出以2 趟直接选择排序后的结果。194设一组初始记录重点字会合为 (25 , 10, 8,27, 32,68) ,散列表的长度为8,散列函数 H(k)=k mod 7 ,要求分别用线性探测和链地点法作为解决矛盾的方法设计哈希表。5设无向图 G(所右图所示) ,要求给出该图的深度优先和广度优先遍历的序列并
7、给出该图的最小生成树。三、应用题1.链式储存结构略,前序 ABDEC,中序 DBEAC,后序 DEBCA。2.哈夫曼树略, WPL=783.(18,5,16,19,21,23), (5 , 16,21, 19,18, 23)h0h1801234567h24.链地点法: h310线性探测:81025322768h42532h568h6275.深度: 125364,广度: 123456,最小生成树T 的边集为 E=(1, 4),(1, 3), (3, 5),(5, 6), (5,6)四、算法设计题 (20 分 )1.设计判断单链表中结点能否对于中心对称算法。2.设计在链式储存结构上成立一棵二叉树的
8、算法。3.设计判断一棵二叉树是不是二叉排序树的算法。四、算法设计题1.设计判断单链表中结点能否对于中心对称算法。 typedef struct int s100; int top; sqstack;int lklistsymmetry(lklist *head)sqstack stack; stack.top= -1; lklist *p; for(p=head;p!=0;p=p-next) stack.top+; stack.sstack.top=p-data;for(p=head;p!=0;p=p-next) if (p-data=stack.sstack.top) stack.top=s
9、tack.top-1; else return(0); return(1);2.设计在链式储存结构上成立一棵二叉树的算法。 typedef char datatype;typedef struct node datatype data; struct node *lchild,*rchild; bitree; void createbitree(bitree *&bt)char ch; scanf(%c,&ch); if(ch=#) bt=0; return; bt=(bitree*)malloc(sizeof(bitree); bt-data=ch; createbitree(bt-lchi
10、ld); createbitree(bt-rchild);3.设计判断一棵二叉树是不是二叉排序树的算法。 int minnum=-32768,flag=1;typedef struct nodeint key; struct node *lchild,*rchild;bitree; void inorder(bitree *bt)if (bt!=0)inorder(bt-lchild); if(minnumbt-key)flag=0; minnum=bt-key; inorder(bt-rchild);数据结构试卷(一)参照答案数据结构试卷(二)一、选择题 (24 分 )1下边对于线性表的表达
11、错误的选项是( )。(A)线性表采纳次序储存一定占用一片连续的储存空间(B)线性表采纳链式储存不用占用一片连续的储存空间(C)线性表采纳链式储存便于插入和删除操作的实现(D)线性表采纳次序储存便于插入和删除操作的实现2设哈夫曼树中的叶子结点总数为m,若用二叉链表作为储存结构,则该哈夫曼树中总合有()个空指针域。(A) 2m-1(B) 2m(C) 2m+1(D) 4m3设次序循环行列Q0:M-1 的头指针和尾指针分别为F 和 R,头指针 F 老是指向队头元素的前一地点,尾指针 R 老是指向队尾元素的目前地点,则该循环行列中的元素个数为()。(A) R-F(B) F-R(C) (R-F+M) M(
12、D) (F-R+M) M4设某棵二叉树的中序遍历序列为ABCD ,前序遍历序列为CABD ,则后序遍历该二叉树获得序列为()。(A) BADC(B) BCDA(C) CDAB(D) CBDA5设某完整无向图中有 n 个极点,则该完整无向图中有()条边。(A) n(n-1)/2(B) n(n-1)(C) n 2(D) n2-16设某棵二叉树中有2000 个结点,则该二叉树的最小高度为()。(A) 9(B) 10(C) 11(D) 127设某有向图中有n 个极点,则该有向图对应的毗邻表中有()个表头结点。(A) n-1(B) n(C) n+1(D) 2n-18设一组初始记录重点字序列 (5 , 2
13、, 6,3,8) ,以第一个记录重点字5 为基准进行一趟迅速排序的结果为()。(A) 2,3,5,8,6(B) 3,2,5, 8,6(C) 3,2,5,6,8(D) 2,3,6, 5,8二、填空题 (24 分 )1.为了能有效地应用 HASH查找技术,一定解决的两个问题是_ 和_ 。2.下边程序段的功能实现数据x 进栈,要求在下划线处填上正确的语句。typedef struct int s100; int top; sqstack; void push(sqstack &stack,int x)if (stack.top=m- 1) printf( “ overflow ” );else _;
14、_;3. 中序遍历二叉排序树所获得的序列是_序列(填有序或无序) 。4.迅速排序的最坏时间复杂度为 _,均匀时间复杂度为 _ 。5.设某棵二叉树中度数为 0 的结点数为 N0,度数为 1 的结点数为 N1,则该二叉树中度数为2 的结点数为_;若采纳二叉链表作为该二叉树的储存结构,则该二叉树中共有_ 个空指针域。6.设某无向图中极点数和边数分别为n 和 e,全部极点的度数之和为d,则 e=_。7.设一组初始记录重点字序列为 (55 , 63, 44,38,75,80,31, 56) ,则利用挑选法成立的初始堆为_ 。v13248. 设某无向图v213,则从极点 V 开始的深度优先遍历序列为_;G
15、的毗邻表为1v3142v413广度优先遍历序列为_ 。三、应用题 (36 分 )1 设一组初始记录重点字序列为 (45 , 80, 48, 40, 22,78) ,则分别给出第 4 趟简单项选择择排序和第趟直接插入排序后的结果。2 设指针变量 p 指向双向链表中结点 A,指针变量 q 指向被插入结点 B,要求给出在结点 A 的后边插入结点 B 的操作序列(设双向链表中结点的两个指针域分别为 llink 和 rlink )。3 设一组有序的记录重点字序列为 (13 , 18,24, 35, 47, 50, 62,83, 90) ,查找方法用二分查找,4要求计算出查找重点字 62时的比较次数并计算
16、出查找成功时的均匀查找长度。4 设一棵树 T 中边的会合为 (A ,B) ,(A ,C),(A ,D) ,(B ,E),(C,F), (C, G) ,要求用孩子兄弟表示法(二叉链表)表示出该树的储存结构并将该树转变为对应的二叉树。5 设有无向图 G(如右图所示) ,要求给出用普里姆算法结构最小生成树所走过的边的会合。6 设有一组初始记录重点字为 (45 , 80, 48, 40, 22, 78) ,要求结构一棵二叉排序树并给出结构过程。四、算法设计题 (16 分 )1 设有一组初始记录重点字序列( K1, K2, , Kn),要求设计一个算法能够在 O(n) 的时间复杂度内将线性表区分红两部分
17、, 此中左半部分的每个重点字均小于 Ki ,右半部分的每个重点字均大于等于 Ki 。2 设有两个会合 A 和会合 B,要求设计生成会合 C=A B 的算法,此中会合 A、 B 和 C 用链式储存结构表示。数据结构试卷(二)参照答案一、选择题1.D 2.B 3.C 4.A 5.A 6.C 7.B 8.C二、填空题1.结构一个好的 HASH函数,确立解决矛盾的方法2.stack.top+ , stack.sstack.top=x3.有序4.O(n2 ) , O(nlog 2n)5.N0-1 ,2N0+N16.d/27.(31 , 38, 54, 56, 75, 80, 55,63)8.(1 ,3,
18、 4,2), (1 ,3, 2,4)三、应用题1.(22 , 40, 45, 48, 80, 78) , (40 , 45, 48, 80, 22, 78)2.q-llink=p; q-rlink=p-rlink; p-rlink-llink=q; p-rlink=q;3.2,ASL=91*1+2*2+3*4+4*2)=25/94.树的链式储存结构略,二叉树略5.E=(1 , 3), (1, 2),(3,5), (5, 6), (6, 4)6.略四、算法设计题1. 设有一组初始记录重点字序列( K1, K2, , Kn),要求设计一个算法能够在 O(n) 的时间复杂度内将线性表区分红两部分,
19、此中左半部分的每个重点字均小于 Ki ,右半部分的每个重点字均大于等于 Ki 。void quickpass(int r, int s, int t)int i=s, j=t, x=rs;while(ij)while (ix) j=j-1; if (ij) ri=rj;i=i+1;while (ij & rix) i=i+1; if (inext) 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;数
20、据结构试卷(三)一、选择题 (30 分 )1设某数据结构的二元组形式表示为 A=(D ,R),D=01 ,02,03,04,05,06,07, 08,09 ,R=r ,r=, , , , , , , ,则数据结构 A 是( )。(A) 线性结构(B) 树型结构(C) 物理结构(D) 图型结构2下边程序的时间复杂为()for( i=1 , s=0; i=n ; i+ ) t=1 ; for(j=1 ; jnext; p-data=q-data; p-next=q-next; free(q);(B) q=p-next; q-data=p-data; p-next=q-next; free(q);(
21、C) q=p-next; p-next=q-next; free(q);(D) q=p-next; p-data=q-data; free(q);4设有 n 个待排序的记录重点字,则在堆排序中需要()个协助记录单元。(A) 1(B) n(C) nlog 2n(D) n 25设一组初始重点字记录重点字为 (20 ,15,14, 18, 21,36,40,10) ,则以 20 为基准记录的一趟迅速排序结束后的结果为 ( ) 。(A)10 , 15, 14, 18, 20, 36,40, 21(B)10 , 15,14, 18,20, 40,36, 21(C)10 , 15,14, 20,18, 4
22、0,36, 2l(D)15 , 10,14, 18,20, 36,40, 216设二叉排序树中有n 个结点,则在二叉排序树的均匀均匀查找长度为()。(A) O(1)2(C)2(B) O(log n)(D) O(n )7设无向图 G中有 n 个极点 e 条边,则其对应的毗邻表中的表头结点和表结点的个数分别为()。(A) n, e(B) e , n(C) 2n , e(D) n , 2e8.设某强连通图中有n 个极点,则该强连通图中起码有()条边。(A) n(n-1)(B) n+1(C) n(D) n(n+1)9设有 5000 个待排序的记录重点字,假如需要用最快的方法选出此中最小的10 个记录重点字,则用以下()方法能够达到此目的。(A) 迅速排序(B) 堆排序(C)合并排序(D)插入排序10.以下四种排序中()的空间复杂度最大。(A) 插入排序(B) 冒泡排序(C)堆排序(D)合并排序二、填空殖(48 分,此中最后两小题各6 分 )
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1