2套数据结构模拟题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构模拟试题五
一、( 共34分,每题2分)单项选择题
1、在非空循环双链表中q所指的结点前插入一个由p所指结点的过程依次为:p->next=q;p->prior=q->prior;q->prior=p;( C );
A.q->next=p B.q->prior->next=p C.p->prior->next=p
D.p->next->prior=p E.以上答案都不对
2、已知有向图G=(V,E),其中V={v1,v2,v3,v4,v5,v6,v7},E={
A.v1,v3,v4,v6,v2,v5,v7 B.v1,v3,v2,v6,v4,v5,v7
C.v1,v3,v4,v5,v2,v6,v7 D.v1,v2,v5,v3,v4,v6,v7
E.以上答案都不对
3、每个存储结点只含有一个数据元素,存储结点均匀地存放在连续的存储空间,使用函数值对应结点的存储位置,该存储方式是( D )存储方式
A. 顺序 B.链接 C.索引 D.散列 E.以上答案都不对
4、对于单链表形式的队列,队空的条件是( A )
A.F=R=nil B.F=R C.F≠nil且R=nil D.R-F=1
E.以上答案都不对
5、采用邻接表存储的图的深度优先遍历算法类似于树的( B )。
A. 中根遍历 B.先根遍历 C.后根遍历 D.按层次遍历
E.以上答案都不对
6、对于序列(49,38,65,97,76,13,27,50)按由小到大进行排序,( D )是初始步长d=4的希尔排序法第一趟的结果。
A. 49,76,65,13,27,50,97,38
B. 13,27,38,49,50,65,76,97
C. 97,76,65,50,49,38,27,13
D. 49,13,27,50,76,38,65,97
E.以上答案都不对
7、在一个长度为n的顺序表的表尾插入一个新元素的渐进时间复杂度为( B )。
A.O(n) B.O(1) C.O(n2) D.O(log2n)
E.以上答案都不对
8、设n阶方阵是一个上三角矩阵,则需存储的元素个数为( D )。
A.n B.n*n C.n*n/2 D.n(n+1)/2 E.以上答案都不对
9、树中所有结点的度等于所有结点数加( C )。
A.0 B.1 C.-1 D.2 E.以上答案都不对
10、如果只想得到1024个元素组成的序列中的前5个最小元素,那么用( D )方法最快。
A.起泡排序 B.快速排序 C.堆排序 D.直接选择排序
E.以上答案都不对
11、循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别为front和rear,则当前元素个数为( A )。
A.(rear-front+m) mod m B.rear-front+1 C.rear-front-1 D.rear-front E.以上答案都不对
12、若线性表最常用的运算是查找第i个元素及其前驱的值,则采用(D )存储方式节省时间。
A.单链表 B.双链表 C.单循环连表 D.顺序表
E.以上答案都不对
13、树最适合用来表示( D )
A.有序数据元素 B.无序数据元素 C.元素之间无联系的数据
D.元素之间有分支层次关系 E.以上答案都不对
14、多关键字文件是指( C )
A.有多个主关键字 B.有多个次关键字 C.有一个主关键字多个次关键字
D.有多个主关键字和多个次关键字 E.以上答案都不对
15、有m个叶子结点的赫夫曼树所具有的结点数为( D )
A.m B.m+1 C.2m D.2m-1 E.以上答案都不对
16、有n个结点的有向完全图的边数为( C )
A.n*n B.2n C.n(n-1) D.2n(n+1) E.以上答案都不对
17、判断有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用(C )。
A.求关键路径的方法
B.求最短路径的DIJKSTRA方法
C.深度优先遍历算法
D.广度优先遍历算法
E.以上答案都不对
二、(共30分,每空2分)填空题
1、在进行直接插入排序时, 其数据比较次数与数据的初始排列( 有 )关;而在进行直接选择排序时,其数据比较次数与数据的初始排列( 无 )关。
2、对于一个具有N个结点和E条边的无向图,若采用邻接表表示,则顶点表的大小为( ),所有边链表中边结点的总数为( )。
3、数据的逻辑结构可形式地用一个二元组B=(K,R)来表示,其中K是( ),R是( )。
4、链表适用于( )查找。
5、通常程序在调用另一个程序时,都需要使用一个( )来保存被调用程度内分配的局部变量、形式参数的存储空间以及返回地址。
6、对一般树和森林的后序遍历序列的次序与对应的二叉树的( )遍历次序相同。
7、前序为abc且后序为cba的二叉树共有( )棵。
8、设广义表C=((x,(a,b)),((x,(a,b)),y)),则C的长度为( ),深度为( )。
9、快速排序的平均时间复杂度是( )。
10、有n结点的二叉链表中,空指针域有( )个;利用这些空指针域,存放指向结点在中序次序下的前趋或后继的指针,这种附加的指针称为( )。
三:(共11分,每题1分)判断题(下列各题,你认为正确的,请打“ √”,错的打“×”)
1、线性表采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。( )
2、只允许最下面的二层结点的度数小于2的二叉树是完全二叉树。( )
3、二叉排序树或者是一颗空二叉树,或者是具有下列性质的二叉树:若它的左子树非空,则根结点的值大于其左孩子的值;若它的右子树非空,则根结点的值
小于其左孩子的值。( )
4、凡是递归定义的数据结构都可以用递归算法来实现它的操作。 ( )
5、当向一个小根堆(最小堆)中插入一个具有最小值的元素时,该元素需要逐层向上调整,直到被调整到堆顶位置为止。( )
6、对于一棵具有n个结点,其高度为h的二叉树,进行任一种次序遍历的时间复杂度为O(n)。( )
7、在散列法中采取开散列(链地址)法来解决冲突时,其装载因子的取值一定在(0,1)之间。( )
8、执行某个排序算法过程中,最初相邻的结点排序后也相邻,则算法是稳定的。( )
9、对具有n个顶点的连通图进行深度优先遍历,所得定点序列是唯一的。( )
10、由于在线性表的链接存储表示中增加了指针字段,所以它比线性表的顺序表示更浪费空间。( )
11、无向图的邻接矩阵一定是对称的,有向图的邻接矩阵则一定是非对称矩阵。( )
四、(10分)已知待排序文件各记录的排序码顺序如下
72 73 71 23 94 16 05 68
请列出快速排序过程中每一趟的排序结果。
五、(10分)对于一个n×n的矩阵A的任一元素A[i][j],按行存储时和按列存储时的地址之差是多少。(若设两种存储的开始存储地址LOC(0,0)及元素所占存储单元数d相同)
六、(10分)给定字母a,b,c,d,e的使用频率为0.09,0.17,0.2,0.23,0.31。设计以该权值为基础的赫夫曼树,并给出赫夫曼编码。
七、(15分)已知num为无符号十进制整数,请写一非递归算法,该算法输出num对应的r进制的各位数字。要求算法中用到的栈采用线性链表存储结构(1
八、(15分)试写一递归算法写出用二叉链表表示的给定二叉树的叶结点总数。
九、(15分)设计一个算法将单循环链表L分解为两个具有相同结构的链表A、B,其中,A表中结点是L表中值为奇数的结点,而B表中结点是L表中值为偶数的结点(要求利用原表结点)。
数据结构模拟试题五参考答案
一、( 共34分,每题2分)单项选择题
1、C 2、A 3、D 4、A 5、B 6、D 7、B 8、D 9、C 10、D 11、A
12、D 13、D 14、C 15、D 16、C 17、C
二、(共30分,每空2分)填空题
1、答:有 、无
2、答:N、2E
3、答:结点的有穷集合、K上关系的有穷集合
4、答:顺序
5、答:栈
6、答:中
7、答:4
8、答:2, 4
9、答:O(nlog2n)
10、答:n+1, 线索
三:(共11分,每题1分)判断题
1、√ 2、× 3、× 4、√ 5、√ 6、√
7、×
8、×
9、×
10、×
11、×
四、(10分)各趟结果如下:
[68 05 71 23
16] 72 [94 73]
[16 05 23] 68 [71] 72 [94 73]
[05] 16 [23] 68 [71] 72 [94 73]
05 16 [23] 68 [71] 72 [94 73]
05 16 23 68 71 72 [94 73]
05 16 23 68 71 72 [73] 94
05 16 23 68 71 72 73 94
五、(10分)按行存储时与按列存储时,计算A[i][j]地址的公式分别为
LOC(i,j)=LOC(0,0)+(I*n+j)*d
及 LOC'(i,j)=LOC(0,0)+(j*n+i)*d
两者相减,得
LOC(i,j)-LOC'(i,j)=LOC(0,0)+(i*n+j)*d-LOC(0,0)-(j*n+i)*d
=(i-j)*n*d+(j-i)*d或:
=(i-j)*(n-1)*d
数据结构模拟试题四
一、( 共30分,每题2分)单项选择题
1.循环队列用数组A[0..m-1]存放其元素值,已知其头尾指针分别为front和rear,则当前元素个数为()
A.(rear-front+m) mod m B.rear-front+1 C.rear-front-1
D.rear-front E.以上答案都不对
2.数据结构中,与所使用的计算机无关的是数据的()
A.存储结构 B.物理结构 C.逻辑结构
D.物理结构和存储结构 E.以上答案都不对
3.在具有n个结点的单链表中,实现()的操作,其算法的时间复杂度都是O(n)。
A.遍历链表和求链表的第i个结点 B.在地址为p的结点之后插入一个结点 C.删除开始结点 D.删除地址为p的结点的后继结点 E.以上答案都不对
4.某二叉树的前序遍历序列为IJKLMNO,中序遍历序列为JLKINMO,则后序遍历序列为()
A.JLKMNOI B.LKNJOMI C.LKJNOMI D.LKNOJMI E.以上答案都不对
5.设n阶方阵是一个上三角矩阵,则需存储的元素个数为()
A.n B.n*n C.n*n/2 D.n(n+1)/2 E.以上答案都不对
6.串的“模式匹配”是指()
A.判两个串是否相等 B.对两个串进行大小比较 C.找某字符在串中第一次出现位置 D.找某子串在主串中第一次出现的位置 E.以上答案都不对
7.有n个结点的无向图的边数最多为()
A.n+1 B.n(n-1)/2 C.n(n+1) D.2n(n+1) E.以上答案都不对
8.多关键字文件是指()
A.有多个主关键字 B.有多个次关键字 C.有一个主关键字多个次关键字
D.有多个主关键字和多个次关键字 E.以上答案都不对
9.某顺序存储的表格中有90000个元素,已按关键字值额定升序排列,假定对每个元素进行查找的概率是相同的,且每个元素的关键字的值皆不相同。用顺序查找法查找时,平均比较次数约为()
A.25000 B.30000 C.45000 D.90000 E.以上答案都不对
10.对于序
列(49,38,65,97,76,13,27,50)按由小到大进行排序,()是初始步长d=4的希尔排序法第一趟的结果。
A. 49,76,65,13,27,50,97,38 B. 13,27,38,49,50,65,76,97
C. 97,76,65,50,49,38,27,13 D. 49,13,27,50,76,38,65,97
E. 以上答案都不对
11.下列排序算法中,第一趟排序完毕后,其最大或最小元素一定在其最终位置的算法是()
A.归并排序 B.直接插入排序 C.快速排序
D.冒泡排序 E.以上答案都不对
12.关于树和二叉树的有序性,正确的结论是()
A. 树和二叉树都是有序的 B.树和二叉树都可能是有序的
C.树和二叉树都是无序的 D.二叉树是有序的,树可能是有序的,也可能是无序的 E.以上答案都不对
13.在一个图中,所有顶点的度数之和与图的边数的比是()
A.1:2 B.1:1 C.2:1 D.4:1 E.以上答案都不对
14.若一组纪录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个纪录为基准得到的一次划分结果为()
A.38,40,46,56,79,84 B.40,38,46,79,56,84
C.40,38,46,56,79,84 D.40,38,46,84,56,79
E.以上答案都不对
15.从理论上讲,将数据以()结构存放,则查找一个数据所用时间不依赖于数据个数n。
A.二叉查找树 B.链表 C.二叉树 D.哈希表 E.以上答案都不对
二、(共40分,每空2分)填空题
1.二分查找算法的时间复杂度为( )
2.在单链表中,申请到新结点p,将p指向的结点后插到s所指结点的操作,其一是p->next=s->next,其二是( )。
3.对一般树和森林的后序遍历序列的次序与对应的二叉树的( )遍历次序相同。
4.设二维数组A[10..20,5..10]按行优先存储,每个元素占4个单元,A[10,5]的地址为160,则A[15,10]的地址为( )。
5.线性结构反映结点间的逻辑关系是( )的,非线性结构反映结点间的逻辑关系是( )的。
6.赫夫曼树是带权路径长度( )的二叉树。
7.前序为abc且后序为cba的二叉树共有( )棵。
8.已知完全二叉树的高度为8,第7层有10个叶子结点,则二叉树的总结点数至少是( )。
9.已知二叉树有50个叶子结点,且仅有一个孩子的结点数为30,则总结点数为( )。
10.具有m个叶子结点的赫夫曼树共有( )个结点。
11.从一棵二叉树的前序序列和( )可唯一确定这棵二叉树。设某二叉树的后序遍历为ABKCBPM,则可知该二叉树的根为( )。
12.设广义表C=((x,(a,b)),((x,(a,b)),y)),则C的长度为( ),深度为( )。
13.设有一稠密图G,则G采用( )存储较省空间。
14.在插入和选择排序中,若初始数
据基本正序,则选用( );若初始数据基本反序,则选用( )。
15.有n结点的二叉链表中,空指针域有( )个;利用这些空指针域,存放指向结点在中序次序下的前趋或后继的指针,这种附加的指针称为( )。
三、(10分)已知一棵度为m的树中有N1个度为1的结点,N2个度为2的结点,……Nm个度为m的结点,问该树中有多少个叶子结点。请写出推导过程。
四、(15分)给定字母a,b,c,d,e的使用频率为0.09,0.17,0.2,0.23, 0.31。设计以该权值为基础的赫夫曼树,并给出赫夫曼编码。
五、(15分)设散列表的长度为13,散列函数为H(K)=K%13,给定的关键字序列为:19,14,23,01,68,20,84,27,55,11,10,79。试画出用线性探测再散列解决冲突时所构成的散列表。并求等概率情况下这种方法查找成功和查找不成功时的平均查找长度。
六、(15分)已知奇偶交换排序如下所述:第一趟对序列中所有奇数项i扫描,将a[i]和a[i+1]进行比较;第二趟对序列中所有偶数项i扫描,将a[i]和a[i+1]进行比较。每次比较时若 a[i]>a[i+1],则将两者交换。第三趟对所有奇数项,第四趟对所有偶数项……,如此重复,直至整个序列有序。
1) 写出奇偶交换排序算法,设待排序的n个元素存放在数组a[1..n] 中。
2) 说明你的排序方法的结束条件
3) 若待排序的初始序列已按关键字从小到大有序,则关键字的比较次数是多少?
七、(10分)已知长度为n的线性表A采用顺序存储结构,并且元素按值大小非递减排列,下面的算法删除线性表中多余的值相同的元素。请在算法中空白处填入适当内容,使之能够正常工作。
void DEL(int A[n]) // 设A[1]~A[n]存放着n个元素
{ int i=1;
while (1) do
if (A[i]!=A[i+1]) i++;
else //查找满足条件的元素
{ for (2) A[j-1]=A[j];//删除第i+1个元素(满足条件的元素)
(3) //修改线性表的长度
}
}
八、(15分)设计算法, 已知一棵以二叉链表存储的二叉树,root指向根结点,p指向二叉树中任一结点,编写算法求从根结点到p所指结点之间的路径(要求输出该路径上每个结点的数据)。
数据结构模拟试题四参考答案
一、( 共30分,每题2分)单项选择题
1A 2C 3A 4C 5D 6D 7B 8C 9C 10D 11D 12D 13C 14C 15 D
二、(共40分,每空2分)填空题
1. log2n
2. s->next=p
3. 中序
4. 300
5. 一对一的,一对多或多对多的
6. 最小
7. 4
8. 235
9. 129
10. 2m-1
11. 中序,M
12. 2
,4
13. 邻接矩阵
14. 插入排序,选择排序
15. n+1,线索