数据结构复习题Word文档格式.docx
《数据结构复习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构复习题Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
A、最长回路
B、最短回路
C、从源点到汇点的最长路径
D、从源点到汇点的最短路径
10、顺序查找长度为n的顺序表,查找成功的平均检索长度____D___。
A、n
B、n/2
C、(n-1)/2
D、(n+1)/2
11.算法分析的两个主要方面是B。
A.可读性和文档性B.时间复杂度和空间复杂度C.正确性和简明性D.数据复杂性和程序复杂性
12.在数据结构中,从逻辑上可以把数据结构分成A。
A.线性结构和非线性结构B.紧凑结构和非紧凑结构C.动态结构和静态结构D.内部结构和外部结构
13.下面关于线性表的叙述中,错误的是C。
A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用链接存储,不必占用一片连续的存储单元。
C.线性表采用顺序存储,便于进行插入和删除操作。
D.线性表采用链接存储,便于插入和删除操作。
14.设栈的输入序列是1,2,3,4,则D不可能是其出栈序列。
A.1,2,4,3B.2,1,3,4
C.1,4,3,2D.4,3,1,2
15.栈的插入和删除操作在A进行。
A.栈顶B.栈底C.任意位置D.指定位置
16.若允许表达式内多种括号混合嵌套,则为检查表达式中括号是否正确配对的算法,通常选用的辅助结构是B。
A.线性表B.栈C.队列D.二叉排序树
17.一个队列的入列序列是1,2,3,4,则队列的输出序列是A。
A.1,2,3,4B.4,3,2,1C.1,4,3,2D.3,2,4,1
18.设有两个串p和q,求q在p中首次出现的位置的运算称作B
A.连接B.模式匹配C.求子串D.求串长
19.稀疏矩阵一般采用C方法压缩存储。
A.三维数组B.单链表C.三元组表D.散列表
20.二叉树有D种形态。
A.2B.3C.4D.5
21.深度为4的二叉树最多有C个结点。
A.16B.10C.15D.32
22.具有9个叶结点的二叉树中有B个度为2的结点。
A.8B.9C.10D.ll
23.除第一层外,满二叉树中每一层结点个数是上一层结点个数的C。
A.1/2倍B.1倍C.2倍D.3倍
24.在一非空二叉树的中序遍历序列中,根结点的右边A。
A.只有右子树上的所有结点B.只有右子树上的部分结点
C.只有左子树上的部分结点D.只有左子树上的所有结点
25.引入二叉线索树的目的是A。
A.加快查找结点的前驱或后继的速度
B.为了能在二叉树中方便的进行插入与删除
C.为了能方便的找到双亲
D.使二叉树的遍历结果唯一
26.具有7个顶点的无向图至少应有条边才能确保是一个连通图。
A.5B.6C.7D.8
27.下面方法可以判断出一个有向图是否有环(回路)。
A.深度优先遍历B.拓扑排序
C.求最短路径D.广度优先遍历
28.下列图的邻接矩阵是对称矩阵。
A.有向图B.无向图C.AOV网D.AOE网
29.关键路径是事件结点网络中。
A.从源点到汇点的最长路径B.从源点到汇点的最短路径
C.最长回路D.最短回路
30.对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为A。
A.(n+1)/2B.n/2C.nD.(1+n)*n/2
31.下面程序段的时间复杂度为(D)
s=0;
for(i=1;
i<
n;
i++)
for(j=1;
j<
i;
j++)
s+=i*j;
A.O
(1)B.O(logn)C.O(n)D.O(n2)
32.已知指针p和q分别指向某单链表中第一个结点和最后一个结点。
假设指针s指向另一个单链表中某个结点,则在s所指结点之后插入上述链表应执行的语句为(A)
A.q->
next=s->
next;
s->
next=p;
B.s->
q->
C.p->
next=q;
D.s->
p->
33.在计算机内实现递归算法时所需的辅助数据结构是(A)
A.栈B.队列C.树D.图
34.假设以数组A[m]存放循环队列的元素。
已知队列的长度为length,指针rear指向队尾元素的下一个存储位置,则队头元素所在的存储位置为(B)
A.(rear-length+m+1)%mB.(rear-length+m)%m
C.(rear-length+m-1)%mD.(rear-length)%m
35.通常将链串的结点大小设置为大于1是为了(B)
A.提高串匹配效率B.提高存储密度
C.便于插入操作D.便于删除操作
36.带行表的三元组表是稀疏矩阵的一种(A)
A.顺序存储结构B.链式存储结构
C.索引存储结构D.散列存储结构
37.表头和表尾均为空表的广义表是(B)
A.()B.(())C.((()))D.((),())
38.用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为(C)
A.n-1B.nC.n+lD.2n
39.为便于判别有向图中是否存在回路,可借助于(D)
A.广度优先搜索算法B.最小生成树算法
C.最短路径算法D.拓扑排序算法
40.连通网的最小生成树是其所有生成树中(D)
A.顶点集最小的生成树B.边集最小的生成树
C.顶点权值之和最小的生成树D.边的权值之和最小的生成树
二、填空题
1.数据的存储结构有两种方式,即__顺序____存储方式和__链式____存储方式。
2.对长度为n的顺序表执行插入元素操作,其插入算法的平均时间复杂度为_______O(n)_______。
3.以head为头指针的带头结点的单链表和循环单链表中,判断链表为空的条件分别是___head->
next==NULL__和__head->
next==head___。
4.设L为非空单链表,若要删除指针p所指结点的直接后继结点,则需执行下列语句序列:
q=p->
__p->
next=q->
next_;
free(q);
5.在顺序栈中设栈顶指针为top,则栈为空的条件是___TOP==0_________。
6.假设元素a,b,c,d按顺序依次进栈,若得到的出栈序列中第一个元素为c,则可能得到的出栈序列总数为____3________。
7.在队列中,允许进行删除操作的一端称为___队头________,允许进行插入操作的一端称为____队尾________。
8.循环队列Q的头指针和尾指针分别是front和rear,m表示该队列的最大容量,则循环队列为空的条件是___front==rear_____________,循环队列为满的条件是_______(rear+1)%m==front__________________。
9.在一棵高度为k的满二叉树中,结点总数为_____2k-1___________。
10.设完全二叉树有n个结点,若一个结点的编号为i(1≤i≤n),则它的左孩子结点的编号为_____2i____,右孩子结点的编号为___2i+1_______,双亲结点的编号为____i/2______。
11.构造连通网最小生成树的两个典型算法是____普里姆____算法和____克鲁斯卡尔_____算法。
12.在AOV网中,顶点表示___活动___________。
13.在排序过程中,主要进行的两种基本操作是关键字的___比较__________操作和记录的____移动_________操作。
14.数据的物理结构包括__数据元素_________的表示和____关系_______的表示。
15.设单链表的结点结构为(data,next),next为指针域,已知指针p指向单链表中data为x的结点,指针q指向data为y的新结点,若将结点y插入到结点x之后,则需要执行以下语句:
__q->
next=p->
_p->
next=q_____。
16.设某广义表H=(A,(a,b,c)),运用head函数和tail函数求出广义表H中某元素b的运算式__head(tail(head(tail(H))))______。
方法:
(tail(H)找出(a,b,c)在head找出(a),(b,c)在tail找出(b,c)在head找出B)
17.利用树的孩子兄弟表示法存储,可以将一棵树转换为____二叉树_______。
18.哈夫曼树是____带权路径长度最小的二叉树,又称最优二叉树_______。
19.有向图G的强连通分量是指__图G的极大强连通子图_______。
20.有n个顶点的无向完全图边的条数为___n*(n-1)/2______
21.已知一无向图G=(V,E),其中V={a,b,c,d,e}E={(a,b),(a,d),(a,c),(d,c),(b,e)}现用某一种图遍历方法从顶点a开始遍历图,得到的序列为abecd,则采用的是______深度优先搜索___遍历方法。
22.根据排序过程中涉及的存储器不同,可将排序方法分为_外部排序__和__内部排序_
23.用结构数组R[0..n]存储待排序序列,用直接插入排序法进行排序,为避免数组越界,设置的监视哨为____R[0]_______。
得分
评卷人
三、简答题(24-25号、28-34号,每人1题)
1.已知一棵二叉树的中序遍历结果为DCBGEAHFIJK,后序遍历结果为DCEGBFHKJIA,试画出该二叉树。
2.简述逻辑结构与物理结构的区别与联系
3.简述线性表、栈、队列的区别与联系
4.线性结构与非线性结构有何差别?
5.数据结构如何分类?
有几种形式?
6.一棵度为2的树与一棵二叉树有何区别?
7.如果G是一个具有n个顶点的连通无向图,那么G最多有几条边?
最少有几条边?
8.证明:
具有n个结点的完全二叉树的深度为┗log2n┛+1。
9.若较频繁地对一个线性表进行插入和删除操作,该线性表宜采用何种存储结构?
为什么?
四、应用题
(1)(35-38号、40号,每人1题)
1.画出具有3个结点的二叉树的所有不同形态
2.对于下图所示的二叉树,写出先序、中序、后序遍历的序列
3.按给定序列{46、25、78、62、18、34、12、40、73}顺序构造一棵二叉排序树
4.给定4个叶子结点a、b、c、d,分别带权8、5、1、3,构造一棵含这4个叶子结点的哈夫曼树,并计算这棵树的带权路径长度(WPL)。
5.已知线性表L中有n个元素,要求在线性表的第i个位置前插入元素b。
在算法中有下划线的位置填空,使之成为完整、正确的算法。
(8分)
算法如下:
Typedefstruct
{
Elemtype*elem;
/*存放数据元素的一维数组*/
intlen;
/*len记录线性表的长度*/
intlistsize;
/*listsize记录线性表空间的长度*/
}SeqList;
intInsertList(SeqList*L,inti,elemtypeb)
{
if(i>
L->
len+1)||(i<
1)||(L->
len>
=L->
listsize)
returnERROR;
else
for(j=L->
len;
j>
=i;
j--)
L->
len=L->
len+1;
returnTRUE;
}
五、应用题
(2)(41-45号,每人1题)
1.已知某系统在通信联络中只出现{A、B、C、D、E、F、G、H}8种字符,其出现概率分别为0.05,0.29,0.07,0.08,0.14,0.23,0.03,0.11,试为这8种字符设计哈夫曼编码。
请先画出你所构造的哈夫曼树(要求树中左孩子结点的权值小于右孩子结点的权值,然后分别写出每个字符对应的编码。
2.分别用PRIME方法和Kruskal画出下面网络的最小生成树。
3.设待排序的记录共7个,排序码分别为8,3,2,5,9,1,6。
(1)用直接插入排序。
试以排序码序列的变化描述形式说明排序全程(动态过程)要求按递减顺序排序。
(2)用直接选择排序。
试以排序码序列的变化描述形式说明排序全过程(动态过程)要求按递减顺序排序。
4.下面是一个在带头结点的单链表中交换值为x的结点与其前驱结点的算法,填空使之成为一个完整的算法。
(10分)
voidchange(LinkListhead,DataTypex)
{ListNode*p,*q;
intk;
p=head;
q=head->
next;
while(
(1)&
&
q->
data!
=x){
p=q;
(2);
}
if(q!
=NULL&
p!
=head){
k=p->
data;
(3);
data=k;
q=p;
}
(1)
(2)
(3)
5.二叉链表定义如下:
TypedefstructBiTNode{
Chardata;
StructBiTnode*lchild,*rchild;
}BiTNode,*BiTree;
阅读下列算法,并回答问题:
Voidf3(BiTree*T){
scanf(&
ch);
if(ch==’’)T=NULL;
else{
if(!
(T=(BiTNode*)malloc(sizeof(BiTNode)))
exit(OVERFLOW);
T->
data=ch;
f3(T->
lchild);
rchild);
returnOK;
该算法用于生成二叉树。
若用户输入:
ABD¢¢EG¢¢¢C¢F¢¢¢(其中,¢代表用户输入的空格),请画出调用f3(*p)所生成的二叉树。
(10分)
参考答案
1-5BACDC
6-10ABACD
11-15BACDA
16-20BAACD
21-25CBCAA
26-30BBBAA
31-35DAABB
36-40ABCDD
序号参考答案
(1)顺序、链式
(2)O(n)
(3)head->
next==NULL
head->
next==head
(4)p->
next
(5)top==0或top==-1
(6)3
(7)队头、队尾
(8)front==rear、(rear+1)%m==front
(9)2k-1
(10)2i、2i+1、i/2
(11)普里姆、克鲁斯卡尔
(12)活动
(13)比较、移动
(14)数据元素关系
(15)q->
nextp->
next=q
(16)head(tail(head(tail(H))))
(17)二叉树
(18)带权路径长度最小的二叉树,又称最优二叉树
(19)图G的极大强连通子图
(20)n*(n-1)/2
(21)深度优先搜索
(22)外部排序内部排序
(23)R[0]
三、简答题
1
2数据元素之间的逻辑关系称为逻辑结构;
物理结构是指数据的逻辑结构在计算机中的映像即数据结构在计算机中的存储方法。
3栈和队列是操作受限的线性表。
栈只能在栈顶插入和删除元素。
栈的特点是后进先出。
队列只能在队尾插入元素,在队头删除元素。
队列的特点是先进先出。
4线性结构的前驱与后继之间为一对一关系,非线性结构的前驱与后继之间通常为一对多或多对多关系。
5集合结构、线性结构、树状结构、图状结构或网状结构
6二叉树的子树有左右之分,其次序不能任意颠倒。
7G最多有n(n-1)/2条边、最少有n-1条边
8证明:
假设此二叉树的深度为k,根据二叉树性质2及完全二叉树的定义得到:
2k-1-1<
n≤2k-1
即:
2k-1≤n〈2k
对不等式取对数,有
k-1≤log2n〈k
由于k是整数,所以有:
k=┗log2n┛+1
证毕。
9采用链式存储结构,它根据实际需要申请内存空间,而当不需要时又可将不用结点空间返还给系统。
在链式存储结构中插入和删除操作不需要移动元素。
四、应用题
(1)
序号
参考程序
1
2
A、B、D、E、G、C、F、H
D、B、G、E、A、C、F、H
D、G、E、B、H、F、C、A
3
4
WPL=8×
1+5×
2+(1+3)×
3=30
5
elem[j+1]=L->
elem[j];
elem[i]=b;
五、应用题
(2)
A:
0001
B:
11
C:
1010
D:
1011
E:
100
F:
01
G:
0000
H:
001
ACBDFEG
(AC)(AB)(EF)(BD)(DF)(CG)
1)直接插入排序
第一趟(3)[8,3],2,5,9,1,6第二趟
(2)[8,3,2],5,9,1,6
第三趟(5)[8,5,3,2],9,1,6第四趟(9)[9,8,5,3,2],1,6
第五趟
(1)[9,8,5,3,2,1],6第六趟(6)[9,8,6,5,3,2,1]
2)直接选择排序(第六趟后仅剩一个元素,是最小的,直接选择排序结束)
第一趟(9)[9],3,2,5,8,1,6第二趟(8)[9,8],2,5,3,1,6
第三趟(6)[9,8,6],5,3,1,2第四趟(5)[9,8,6,5],3,1,2
第五趟(3)[9,8,6,5,3],1,2第六趟
(2)[9,8,6,5,3,2],1
(1)q!
=null
(2)q=q->
(3)p->
data
5