数据结构导论模拟试题Word下载.docx
《数据结构导论模拟试题Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构导论模拟试题Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
B.s->
link=top->
link;
top->
C.s->
link=top;
top=s;
D.s->
top=top->
10.一棵具有35个结点的完全二叉树的高度为(A)。
假定空树的高度为-1。
A.5B.6C.7D.8
11.一个有n个顶点和n条边的无向图一定是(D)的。
A.连通B.不连通C.无回路D.有回路
12.在一个长度为n的顺序表的任一位置插入一个新元素的时间复杂度为(A)。
A.O(n)B.O(n/2)C.O
(1)D.O(n2)
13.已知广义表为A((a,b,c),(d,e,f)),从A中取出原子e的运算是(C)。
A.Tail(Head(A))B.Head(Tail(A))
C.Head(Tail(Head(Tail(A))))D.Head(Head(Tail(Tail(A))))
14.在一棵树的静态双亲表示中,每个存储结点包含(B)个域。
A1B2C3D4
15.有向图中的一个顶点的度数等于该顶点的(C)。
A.入度B.出度
C.入度与出度之和D.(入度+出度)/2
15.与邻接矩阵相比,邻接表更适合于存储(C)。
A.无向图B.连通图C.稀疏图D.稠密图
17.较快的数据搜索方法是(D)搜索方法。
A.顺序B.折半C.单链D.散列
18.在闭散列表中,散列到同一个地址而引起的“堆积”问题是由于(B)引起的。
A.同义词之间发生冲突B.非同义词之间发生冲突
C.同义词之间或非同义词之间发生冲突D.散列表“溢出”
19.根据n个元素建立一个有序单链表的时间复杂度为(C)。
A.O
(1)B.O(n)C.O(n2)D.O(nlog2n)
20.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为(D)。
A.front+1==rearB.rear+1==front
C.front==0D.front==rear
21.假定一棵二叉树的第i层上有3i个结点,则第i+1层上最多有(B)个结点。
A.3iB.6iC.9iD.2i
22.对于具有e条边的无向图,它的邻接表中共有(C)个边结点。
A.e-1B.e+1C.2eD.3e
23.图的深度优先搜索遍历类似于树的(A)次序遍历。
24.栈S最多能容纳4个元素。
现有6个元素按A、B、C、D、E、F的顺序进栈,问下列哪一个序列是可能的出栈序列?
(C)
A.E、D、C、B、A、FB.B、C、E、F、A、D
C.C、B、E、D、A、FD.A、D、F、E、B、C
25.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号为49的结点的左孩子的编号为:
(A)//左孩子:
2*i,右孩子:
2*i+1.
A.98B.99C.50D.48
26.对下列关键字序列用快速排序法进行排序时,速度最快的情形是:
(B)
A.{21、25、5、17、9、23、30}
B.{25、23、30、17、21、5、9}
C.{21、9、17、30、25、23、5}
D.{5、9、17、21、23、25、30}
27.对于只在表的首、尾进行插入操作的线性表,宜采用的存储结构为(C)
A.顺序表B.用头指针表示的单循环链表
C.用尾指针表示的单循环链表D.单链表
28.假设以第一个元素为分界元素,对字符序列(Q,H,C,Y,P,A,M,S,R,D,F,X)进行快速排序,则第一次划分的结果是:
(C)
A.(A,C,D,F,H,M,P,Q,R,S,X,Y)
B.(A,F,H,C,D,P,M,Q,R,S,Y,X)
C.(F,H,C,D,P,A,M,Q,R,S,Y,X)
D.(P,A,M,F,H,C,D,Q,S,Y,R,X)
29.下面是三个关于有向图运算的叙述:
(D)
(1)求有向图结点的拓扑序列,其结果必定是唯一的
(2)求两个指向结点间的最短路径,其结果必定是唯一的
(3)求AOE网的关键路径,其结果必定是唯一的
其中哪个(些)是正确的?
A.只有
(1)B.
(1)和
(2)C.都正确D.都不正确
30.若进栈序列为a,b,c,则通过入出栈操作可能得到的a,b,c的不同排列个数为:
(B)
A.4B.5C.6D.7
31.以下关于广义表的叙述中,正确的是:
(A)
A.广义表是由0个或多个单元素或子表构成的有限序列
B.广义表至少有一个元素是子表
C.广义表不能递归定义
D)广义表不能为空表
32.排序时扫描待排序记录序列,顺次比较相邻的两个元素的大小,逆序时就交换位置。
这是哪种排序方法的基本思想?
A.堆排序B.直接插入排序C.快速排序D.冒泡排序
33.已知一个有向图的邻接矩阵表示,要删除所有从第i个结点发出的边,应该:
(B)
A.将邻接矩阵的第i行删除B.将邻接矩阵的第i行元素全部置为0
C.将邻接矩阵的第i列删除D.将邻接矩阵的第i列元素全部置为0
34.有一个含头结点的双向循环链表,头指针为head,则其为空的条件是:
()
A.head->
priro==NULLB.head->
next==NULL
C.head->
next==headD.head->
next->
priro==NULL
此答案有问题:
Head->
next==Head->
prior==Head;
35.在顺序表(3,6,8,10,12,15,16,18,21,25,30)中,用折半法查找关键码值11,所需的关键码比较次数为:
(C)
A.2B.3C.4D.5
36.以下哪一个不是队列的基本运算?
A.从队尾插入一个新元素B.从队列中删除第i个元素
C.判断一个队列是否为空D.读取队头元素的值
37.对包含n个元素的哈希表进行查找,平均查找长度为:
A.O(log2n)B.O(n)C.O(nlog2n)D不直接依赖于n
38.将一棵有100个结点的完全二叉树从根这一层开始,每一层从左到右依次对结点进行编号,根结点编号为1,则编号最大的非叶结点的编号为:
A.48B.49C.50D.51
39.某二叉树结点的中序序列为A、B、C、D、E、F、G,后序序列为B、D、C、A、F、G、E,则其左子树中结点数目为:
A.3B.2C.4D.5
40.下面[A]是顺序存储结构的优点。
A.存储密度大B.插入运算方便
C.查找方便D.适合各种逻辑结构的存储表示
41.下面关于串的叙述中,[B]是不正确的。
A.串是字符的有限序列B.空串是由空格构成的串
C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储
42.[B]的邻接矩阵是对称矩阵。
A.有向图B.无向图C.AOV网D.AOE网
43.用链式方式存储的队列,在进行删除运算时,[D]。
A.仅修改头指针B.仅修改尾指针
C.头、尾指针都要修改D.头、尾指针可能都要修改
44.二叉树的先序遍历和中序遍历如下,则该二叉树右子树的树根是[C]。
先序序列:
EFHIGJK中序序列:
HFIEJKG
//E是树根(头结点),由中序可知JKG都是右孩子;
再有先序可得G右子树的树根.
A.EB.FC.GD.H
45.下面[B]方法可以判断出一个有向图中是否有环。
46.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为[A]排序法。
A.插入B.选择C.冒泡D.都不是
47.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是[C]。
A.edcbaB.decbaC.dceabD.abcde
48.n个节点的完全二叉树,编号为i的节点是叶子结点的条件是[D]。
A.i<
nB.2*i<
=nC.2*i+1>
nD.2*i>
n
49.向一个有128个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动[B]个元素。
n/2
A.64.5B.64C.63D.65
50.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行[D]。
A.q->
next=p->
next;
p->
next=q;
B.p->
next=q->
q=p;
C.p->
q->
D.p->
nxet=p;
51.对一个满二叉树,m个树叶,n个结点,深度为h,则有[D]。
A.n=h+mB.h+m=2nC.m=h-1D.n=2h-1
52.在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是。
A.选择排序B.冒泡排序C.插入排序D.希尔排序
53.用链式方式存储的队列,在进行插入运算时[D]。
54.在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)插入一个新元素时,需要从后向前依次后移[C]个元素。
A.n-iB.n-i-1C.n-i+1D.i
55.一个栈的入栈序列是12345,则栈的不可能的输出序列是[B]。
A.23415B.54132C.23145D.15432
56.5个顶点的有向图最多有[B]条弧。
A.5B.20C.4D.25
57.假定一个链队的队首和队尾指针分别为front和rear,则判断队空的条件为[D]。
A.front==rearB.front!
=NULL
C.rear!
=NULLD.front==NULL
58.若某线性表中最常用的操作是提取第i个元素及找第i个元素的前驱元素,则采用(D)存储方式最省时间。
59.将含有100个结点的完全二叉树从根开始自上向下,每层从左到右依次编号,且设根结点的编号为1,则编号69的结点的双亲的编号为(A)。
A.34B.35C.33D.无法确定
60.单循环链表的主要优点是(C)。
A.不再需要头指针了
B.已知某结点的位置后,很容易找到其前驱
C.在进行插入、删除运算时,能更好地保证链表不断开
D.从表中任一结点出发都能扫描到整个链表
61.一个栈的入栈顺序是1、2、3、4、5,则此栈不可能的输出顺序为(C)。
A.5、4、3、2、1B.4、5、3、2、1
C.4、3、5、1、2D.1、2、3、4、5
62.串是一种特殊的线性表,其特殊性表现在(D)。
A.可以顺序存储B.数据元素是一个字符
63.n个顶点的无向图中最多有(A)条边。
A.n(n-1)/2B.n(n-1)C.n(n+1)D.n(n+1)/2
64.6个顶点的无向图中,至少有(A)条边才能保证是一个连通图。
65.若某线性表中最常用的操作是删除第1个元素,则不宜采用(D)存储方式。
66.在一棵完全二叉树的顺序存储方式中,若编号i的结点有右孩子,则其右孩子的编号为(C)。
A.2iB.2i-1C.2i+1D.i/2
67.按照二叉树的定义,具有3个结点的二叉树有(C)种不同形态。
A.3B.4C.5D.6
68.在长为n的顺序表中,删除第i个元素(1≤i≤n+1)需要向前移动(A)个元素。
A.n-iB.n-i+1C.n-i-1D.i
69.一个队的入队顺序是1、2、3、4、5,则此队的出队顺序为(D)。
70.栈是一种特殊的线性表,其特殊性表现在(B)。
A.可以顺序存储B.只能从端点进行插入和删除
C.可以链式存储D.可以在任何位置进行插入和删除
71.一棵二叉树中,第k层上最多有(B)个结点。
72.一棵有18个结点的二叉树,其高度最小为(B)层。
A.4B.5C.6D.18
73.有向图中,所有顶点入度和是所有顶点出度和的(B)倍。
A.0.5B.1C.2D.4
(二)填空题
1.数据元素之间存在的相互关系称为数据逻辑结构。
2.数据结构从逻辑上分为线性结构和非线性结构。
3.线性表的顺序存储结构称为顺序表。
4.所有插入在表的一端进行,而所有删除在表的另一端进行的线性表称为队列。
5.深度为h的二叉树,最少有h个结点。
6.折半查找要求待查表为顺序存储并有序的表。
排序。
8.存储数据时,不仅要存储数据元素的值,还要存储元素之间的相互关系。
9.将一棵有100个结点的完全二叉树按层编号,则编号为49的结点X,其双亲PARENT(X)的编号为24。
10、一个字符串相等的充要条件是长度相等和对应位置字符相同。
11、在有向图的邻接表和逆邻接表表示中,每个顶点的边链表中分别链接着该顶点的所有边和顶点相邻的结点。
11、在一个长度为n的顺序表中向第i 个元素(0<
i≤n+1)之前插入一个新元素时,需要向后移动n-i+1个元素。
12、队列是只允许在表的一端进行插入,而在另一端进行删除的线性表。
13、设主串T=“abxxyxyxxbaa”,模式串P=“xyxx”则第6次匹配成功。
14、在一棵二叉树中,第5层上的结点数最多为16。
(根的层次为1)
15、假设一个9阶的上三角矩阵A按列优先顺序压缩存储在一维数组中,其中B[0]存储矩阵中第1个元素a1,1,则B[31]中存放的元素是_a8,4。
16、有n个结点的二叉链表中,其中空的指针域为n+1,指向孩子的指针个数为n-1。
17、二叉树后序遍历的顺序是ABCDE,则该二叉树的根结点是_E。
18、对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则整个邻接表中的结点总数是_e。
19、在单链表上难以实现的排序方法有_插入排序和_选择排序。
20、_散列查找法的平均查找长度与元素个数n无关。
21、在有n个元素的顺序表的任意位置插入一个元素所需移动结点的平均次数为_n+1/2。
22、_栈是插入和删除元素都在表的同一端进行的线性表。
23、广义表L=(a,b,c,L),则其长度为_4。
24、在树中,除跟结点外,其他结点都有且只有一个_双亲结点。
26、在串s=“structure”中,以t为首字符的子串有_11个。
27、广度优先搜索遍历类似于树的按_层次遍历的过程。
28、已知一棵完全二叉树中共有768个结点为,则该树中共有384个叶子结点。
29、在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为_2。
30、两个长度分别m和n(m>
n)的排好序的表归并成一个排好序的表,至少要进行n次键值比较。
通常从四个方面评价算法的质量:
_正确性____、_易读性__、_健壮性__和___高效性__。
31、一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为____O(n)____。
32、若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。
在这种存储结构中,n个结点的二叉树共有__2n__个指针域,其中有__n-1______个指针域是存放了地址,有_____n+1___个指针是空指针。
33、对于一个具有n个顶点和e条边的有向图和无向图,在其对应的邻接表中,所含边结点分别有___e____个和__2e______个。
34、在一个具有n个顶点的无向完全图中,包含有___n(n-1)/2_____条边,在一个具有n个顶点的有向完全图中,包含有____n(n-1)____条边。
35、36.在快速排序、堆排序、归并排序中,__归并排序_______排序是稳定的。
__升序______序列。
_O(n2)_________,平均时间复杂度为___O(nlog2n)_______。
39.设一组初始记录关键字序列为(55,63,44,38,75,80,31,56),则利用筛选法建立的初始堆为______31,38,55,63,75,80,44,56_____________________。
40.数据的物理结构主要包括_顺序__和__链式______两种情况。
41.设一棵完全二叉树中有500个结点,则该二叉树的深度为___9__;
若用二叉链表作为该完全二叉树的存储结构,则共有___501___个空指针域。
42、设输入序列为1、2、3,则经过栈的作用后可以得到____5_______种不同的输出序列。
43、设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的_出度___,第i列上所有元素之和等于顶点i的__入度__。
设哈夫曼树中共有n个结点,则该哈夫曼树中有___0_____个度数为1的结点。
44、设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为___e=2d______。
45、___中序_______遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。
46、设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较____7____次就可以断定数据元素X是否在查找表中。
47、不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为__O
(1)__________。
48、设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为__i/2______,右孩子结点的编号为__2i+1______。
49、设一组初始记录关键字为(72,73,71,23,94,16,5),则以记录关键字72为基准的一趟快速排序结果为__5,16,71,23,72,94,73,__。
50、设有向图G中有向边的集合E={<
1,2>
,<
2,3>
1,4>
4,2>
4,3>
},则该图的一种拓扑序列为___1,4,2,3___________。
51、下列算法实现在顺序散列表中查找值为x的关键字,请在下划线处填上正确的语句。
structrecord{intkey;
intothers;
};
inthashsqsearch(structrecordhashtable[],intk)
{
inti,j;
j=i=k%p;
while(hashtable[j].key!
=k&
&
hashtable[j].flag!
=0){j=(_j+1)%m;
if(i==j)return(-1);
}
if(__hashtable[j].key==k__)return(j);
elsereturn(-1);
}
52、下列算法实现在二叉排序树上查找关键值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)__return(t)_____;
elseif(t->
key>
k)t=t->
lchild;
else__t=t->
rchild______;
53、设有n个无序的记录关键字,则直接插入排序的时间复杂度为__o(n2)______,快速排序的平均时间复杂度为__o(nlog2n)_______。
54、设指针变量p指向双向循环链表中的结点X,则删除结点X需要执行的语句序列为__p->
llink->
rlink=p->
p->
rlink->
llink=p-llink;
_(设结点中的两个指针域分别为llink和rlink)。
根据初始关键字序列(19,22,01,38,10)建立的二叉排序树的高度为____3_______。
55、深度为k的完全二叉树中最少有____2k-1____个结点。
56、设初始记录关键字序列为(K1,K2,…,Kn),则用筛选法思想建堆必须从第__n/2_个元素开