数据结构复习题.docx
- 文档编号:5732849
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:14
- 大小:41.28KB
数据结构复习题.docx
《数据结构复习题.docx》由会员分享,可在线阅读,更多相关《数据结构复习题.docx(14页珍藏版)》请在冰豆网上搜索。
数据结构复习题
一、单项选择题
1.栈和队列的共同特点是()。
A.只允许在端点处插入和删除元素
B.都是先进后出
C.都是先进先出
D.没有共同点
2.用链接方式存储的队列,在进行插入运算时().
A.仅修改头指针 B.头、尾指针都要修改
C.仅修改尾指针D.头、尾指针可能都要修改
3.以下数据结构中哪一个是非线性结构?
()
A.队列 B.栈C.线性表 D.二叉树
4.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?
脚注(10)表示用10进制表示。
A.688B.678C.692D.696
5.树最适合用来表示()。
A.有序数据元素B.无序数据元素
C.元素之间具有分支层次关系的数据D.元素之间无联系的数据
6.二叉树的第k层的结点数最多为().
A.2k-1B.2K+1C.2K-1 D.2k-1
7.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为()
A.1,2,3B.9,5,2,3
C.9,5,3D.9,4,2,3
8.对n个记录的文件进行快速排序,所需要的辅助存储空间大致为
A.O
(1) B.O(n) C.O(1og2n)D.O(n2)
9.对于线性表(7,34,55,25,64,46,20,10)进行散列存储时,若选用H(K)=K%9作为散列函数,则散列地址为1的元素有()个,
A.1B.2C.3D.4
10.设有6个结点的无向图,该图至少应有()条边才能确保是一个连通图。
A.5B.6C.7D.8
11.按排序过程中依据的原则分类,快速排序属于()
A.插入类的排序方法B.选择类的排序方法
C.交换类的排序方法D.归并类的排序方法
12.深度为5的二叉树至多有()个结点。
A、30 B、31 C、32 D、63
13.在长度为36的有序表中进行二分查找时,所需进行的关键字比较次数最多为()
A.4B.5C.6D.7
14.假设在构建散列表时,采用线性探测解决冲突。
若连续插入的n个关键字都是同义词,则查找其中最后插入的关键字时,所需进行的比较次数为()
A.n-1B.nC.n+lD.n+2
15.散列文件也称为()
A.顺序文件B.索引文件
C.直接存取文件D.间接存取文件
16.算法指的是()
A.计算机程序B.解决问题的计算方法
C.排序算法D.解决问题的有限运算序列
17.线性表采用链式存储时,结点的存储地址()
A.必须是不连续的B.连续与否均可
C.必须是连续的D.和头结点的存储地址相连续
18.将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为()
A.O
(1)B.O(n)C.O(m)D.O(m+n)
19.由两个栈共享一个向量空间的好处是:
()
A.减少存取时间,降低下溢发生的机率
B.节省存储空间,降低上溢发生的机率
C.减少存取时间,降低上溢发生的机率
D.节省存储空间,降低下溢发生的机率
20.设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为()
A.front=front+1B.front=(front+1)%(m-1)
C.front=(front-1)%mD.front=(front+1)%m
21.如下陈述中正确的是()
A.串是一种特殊的线性表B.串的长度必须大于零
C.串中元素只能是字母D.空串就是空白串
22.若目标串的长度为n,模式串的长度为[n/3],则执行模式匹配算法时,在最坏情况下的时间复杂度是()
A.O(
)B.O(n)C.O(n2)D.O(n3)
23.一个非空广义表的表头()
A.不可能是子表B.只能是子表
C.只能是原子D.可以是子表或原子
24.7.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。
(A)100(B)40(C)55(D)80
25.在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为()
A.4B.5C.6D.7
26.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为()
A.eB.2eC.n2-eD.n2-2e
27.假设一个有n个顶点和e条弧的有向图用邻接表表示,则删除与某个顶点vi相关的所有弧的时间复杂度是()
A.O(n)B.O(e)C.O(n+e)D.O(n*e)
28.用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序时,序列的变化情况如下:
20,15,21,25,47,27,68,35,84
15,20,21,25,35,27,47,68,84
15,20,21,25,27,35,47,68,84
则所采用的排序方法是()
A.选择排序B.希尔排序C.归并排序D.快速排序
29.适于对动态查找表进行高效率查找的组织结构是()
A.有序表B.分块有序表C.三叉排序树D.线性链表
30.不定长文件是指()
A.文件的长度不固定B.记录的长度不固定
C.字段的长度不固定D.关键字项的长度不固定
31.组成数据的基本单位是()。
(A)数据项(B)数据类型(C)数据元素(D)数据变量
32.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是()。
(A)线性结构(B)树型结构(C)图型结构(D)集合
33.数组的逻辑结构不同于下列()的逻辑结构。
(A)线性表(B)栈(C)队列(D)树
34.二叉树中第i(i≥1)层上的结点数最多有()个。
(A)2i(B)2i(C)2i-1(D)2i-1
35.设指针变量p指向单链表结点A,则删除结点A的后继结点B需要的操作为()。
(A)p->next=p->next->next(B)p=p->next
(C)p=p->next->next(D)p->next=p
36.设栈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)2
37.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()。
(A)100(B)40(C)55(D)80
38.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为()。
(A)3(B)4(C)5(D)1
39.根据二叉树的定义可知二叉树共有()种不同的形态。
(A)4(B)5(C)6(D)7
40.设有以下四种排序方法,则()的空间复杂度最大。
(A)冒泡排序(B)快速排序(C)堆排序(D)希尔排序
41.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为()
A.eB.2eC.n2-eD.n2-2e
42.假设一个有n个顶点和e条弧的有向图用邻接表表示,则删除与某个顶点vi相关的所有弧的时间复杂度是()
A.O(n)B.O(e)C.O(n+e)D.O(n*e)
43.用某种排序方法对关键字序列(25,84,21,47,15,27,68,35,20)进行排序时,序列的变化情况如下:
20,15,21,25,47,27,68,35,84
15,20,21,25,35,27,47,68,84
15,20,21,25,27,35,47,68,84
则所采用的排序方法是()
A.选择排序B.希尔排序C.归并排序D.快速排序
44.适于对动态查找表进行高效率查找的组织结构是()
A.有序表B.分块有序表C.三叉排序树D.线性链表
45.不定长文件是指()
A.文件的长度不固定B.记录的长度不固定
C.字段的长度不固定D.关键字项的长度不固定
二、填空题
46.数据的逻辑结构描述数据元素之间的_________________,与存储方式无关。
47.在一个长度为100的顺序表中删除第10个元素时,需移动___________________个元素。
48.队列的队尾位置通常是随着______________操作而变化的。
49.两个空串联接得到的串的长度为___________________。
50.设对称矩阵A压缩存储在一维数组B中,其中矩阵的第一个元素
存储在B[0],元素
存储在B[11],则矩阵元素
存储在B[______________]中。
51.已知一棵哈夫曼树含有60个叶子结点,
则该树中共有________________个非叶子结点。
52.如图1所示的有向图中含有
_______________个强连通分量。
53.已知一组关键字为{15,36,28,97,24,78,47,52,13,86},其中每相邻两个关键字构成一个有序子序列。
对这些子序列进行一趟两两归并的结果是______________。
54.具有n个元素的一维数组存储一个循环队列,该循环队列的最大长度为____。
55.在一个具有n个顶点的有向完全图中,包含有_______条边。
56.数据的物理结构主要包括_____________和______________两种情况。
57.设一棵完全二叉树中有500个结点,则该二叉树的深度为__________;若用二叉链表作为该完全二叉树的存储结构,则共有___________个空指针域。
58.设输入序列为1、2、3,则经过栈的作用后可以得到___________种不同的输出序列。
59.设有向图G用邻接矩阵A[n][n]作为存储结构,则该邻接矩阵中第i行上所有元素之和等于顶点i的________,第i列上所有元素之和等于顶点i的________。
60.设哈夫曼树中共有n个结点,则该哈夫曼树中有________个度数为1的结点。
621.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为_________。
62.__________遍历二叉排序树中的结点可以得到一个递增的关键字序列(填先序、中序或后序)。
63.设查找表中有100个元素,如果用二分法查找方法查找数据元素X,则最多需要比较________次就可以断定数据元素X是否在查找表中。
64.不论是顺序存储结构的栈还是链式存储结构的栈,其入栈和出栈操作的时间复杂度均为____________。
65.设有n个结点的完全二叉树,如果按照从自上到下、从左到右从1开始顺序编号,则第i个结点的双亲结点编号为____________,右孩子结点的编号为___________。
66.for(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的时间复杂度为_________。
67.设指针变量p指向单链表中结点A,指针变量s指向被插入的新结点X,则进行插入操作的语句序列为__________________________(设结点的指针域为next)。
68.设有向图G的二元组形式表示为G=(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},则给出该图的一种拓扑排序序列__________。
69.设无向图G中有n个顶点,则该无向图中每个顶点的度数最多是_________。
70.设二叉树中度数为0的结点数为50,度数为1的结点数为30,则该二叉树中总共有_______个结点数。
71.设F和R分别表示顺序循环队列的头指针和尾指针,则判断该循环队列为空的条件为_____________________。
72.设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是_____________________________________。
73.简单选择排序和直接插入排序算法的平均时间复杂度为___________。
74.快速排序算法的空间复杂度平均情况下为__________,最坏的情况下为__________。
75.散列表中解决冲突的两种方法是_____________和_____________。
三、简答题
76.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?
为什么?
77.画出与如图2所示森林对应的二叉树。
78.已知有向图G的定义如下:
G=(V,E)
V={a,b,c,d,e}
(1)画出G的图形;
(2)写出G的全部拓扑序列。
(1)
(2)
79.已知一个散列表如下图所示:
35
20
33
48
59
0123456789101112
其散列函数为h(key)=key%13,处理冲突的方法为双重散列法,探查序列为:
hi=(h(key)+
*h1(key))%m
=0,1,…,m-1
其中
h1(key)=key%11+1
回答下列问题:
(1)对表中关键字35,20,33和48进行查找时,所需进行的比较次数各为多少?
(2)该散列表在等概率查找时查找成功的平均查找长度为多少?
80.设一组初始记录关键字序列为(45,80,48,40,22,78),则分别给出第4趟简单选择排序和第4趟直接插入排序后的结果。
81.设指针变量p指向双向链表中结点A,指针变量q指向被插入结点B,要求给出在结点A的后面插入结点B的操作序列(设双向链表中结点的两个指针域分别为llink和rlink)。
82.已知一棵二叉树的中序遍历结果为DCBGEAHFIJK,后序遍历结果为DCEGBFHKJIA,试画出该二叉树。
83.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?
为什么?
84.设一组有序的记录关键字序列为(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求计算出查找关键字62时的比较次数并计算出查找成功时的平均查找长度。
85.设有无向图G(如右图所示),要求给出用普里姆算法构造最小生成树所走过的边的集合。
四、算法阅读题
86.算法F41的功能是清空带头结点的链队列Q。
请在空缺处填入合适的内容,使其成为一个完整的算法。
(9分)
typedefstructnode{
DataTypedata;
structnode*next;
}QueueNode;
typedefstruct{
QueueNode*front;//队头指针
QueueNode*rear;//队尾指针
}LinkQueue;
voidF41(LinkQueue*Q){
QueueNode*p,*s;
p=________
(1)________;
while(p!
=NULL){
s=p;
p=p->next;
free(s);}
________
(2)_______=NULL;
Q->rear=_______(3)_______;
}
(1)
(2)
(3)
87.假设以二叉链表作为二叉树的存储结构,其类型定义如下:
typedefstructnode{
chardata;
structnode*lchild,*rchild;//左右孩子指针
}BinTNode,*BinTree;
阅读下列算法F42,并回答问题:
(6分)
(1)已知如图3所示的二叉树以T为指向根结点的指针,画出执行F42(T)后的二叉树;
(2)简述算法F42的功能。
voidF42(BinTreeT){
if(T){
F42(T->lchild);
F42(T->rchild);
if((!
T->lchild)&&T->rchild){
T->lchild=T->rchild;
T->rchild=NULL;
}
}
}
(1)
(2)
88.LinkListmynote(LinkListL)
{//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L;L=L->next;p=L;
S1:
while(p->next)p=p->next;
S2:
p->next=q;q->next=NULL;
}
returnL;
}
请回答下列问题:
(1)说明语句S1的功能;(3分)
(2)说明语句组S2的功能;(3分)
89.假设两个队列共享一个循环向量空间(参见右下图),(9分)
其类型Queue2定义如下:
typedefstruct{
DateTypedata[MaxSize];
intfront[2],rear[2];
}Queue2;
对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。
请对以下算法填空,实现第i个队列的入队操作。
intEnQueue(Queue2*Q,inti,DateTypex)
{//若第i个队列不满,则元素x入队列,并返回1;否则返回0
if(i<0||i>1)return0;
if(Q->rear[i]==Q->front[①]return0;
Q->data[②]=x;
Q->rear[i]=[③];
return1;
}
①(3分)
②(3分)
③(3分)
90.下列程序判断字符串s是否对称,对称则返回1,否则返回0;
如f("abba")返回1,f("abab")返回0;请在空缺处填入合适的内容,使其成为完整的算法。
intf(
(1)________)
{inti=0,j=0;
while(s[j])
(2)________;
for(j--;i return((3)_______) } (1)(3分) (2)(3分) (3)(3分) 91.在整形有序递增数组中查找与key相等的元素,若找到,则返回该元素在数组中的下标;否则返回-1;请在空缺处填入合适的内容,使其成为完整的算法。 intSearch_bin(inta[],intk,intkey) {low=0;high=k-1; while(low<=high) {mid=(low+high)/2; if( (1)_________)returnmid;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习题