数据结构期末复习题及答案1Word格式文档下载.docx
- 文档编号:16374876
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:52.56KB
数据结构期末复习题及答案1Word格式文档下载.docx
《数据结构期末复习题及答案1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据结构期末复习题及答案1Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
3.将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为(C)
A.O
(1)
B.O(n)
C.O(m)
D.O(m+n)
4.在一个长度为n的顺序表的表尾插入一个新元素的渐进时间复杂度为(B)。
A.O(n)B.O
(1)C.O(n2)D.O(log2n)T
5.线性表L在(B)情况下适用于使用链式结构实现。
A.需经常修改L中的结点值B.需不断对L进行删除插入
C.L中含有大量的结点D.L中结点结构复杂
6.设单链表中结点的结构为(data,1ink)。
已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行下列哪一个操作?
(B)
A.s一>
1ink=p一>
1ink;
p一>
1ink=s
B.q一>
1ink=s;
s一>
link=p
C.p一>
link=s一>
1ink=p
D.p一>
1ink=q
7.已知指针p所指不是尾结点,若在*p之后插入结点*s,应执行下列哪个操作(B)
A.s->
link=p;
p->
link=s;
B.s->
link=p->
link;
C.s->
p=s;
D.p->
s->
8.非空的循环单链表first的尾结点(由p所指向)满足:
(C)
A.p->
link==NULL;
B.p==NULL;
C.p->
link==first;
D.p==first;
9.若让元素1,2,3依次进栈,则出栈次序不可能出现(C)种情况。
A.3,2,1B.2,1,3
C.3,1,2D.1,3,2
10.若进栈序列为1234,则不可能得到的出栈序列是C。
A)3,2,1,4B)3,2,4,1,C)4,2,3,1D)2,3,4,1
11.由两个栈共享一个向量空间的好处是:
(B)
A.减少存取时间,降低下溢发生的机率
B.节省存储空间,降低上溢发生的机率
C.减少存取时间,降低上溢发生的机率
D.节省存储空间,降低下溢发生的机率
12.对于顺序存储的队列,存储空间大小为n,头指针为F,尾指针为R。
若在逻辑上看一个环,则队列中元素的个数为......................(D)
A.R-FB.n+R-FC.(R-F+1)modnD.(n+R-F)modn
13.在一个链队列中,假定front和rear分别为队首和队尾指针,则插入指针s所指的结点的操作为C。
A)front->
next=s;
B)s->
next=rear;
rear=s;
C)rear->
D)s->
next=front;
front=s;
14.设数组data[m]作为循环队列SQ的存储空间,front为队头指针,rear为队尾指针,则执行出队操作后其头指针front值为(D)
A.front=front+1
B.front=(front+1)%(m-1)
C.front=(front-1)%m
D.front=(front+1)%m
15.如下陈述中正确的是(A)
A.串是一种特殊的线性表
B.串的长度必须大于零
C.串中元素只能是字母
D.空串就是空白串
16.一个非空广义表的表头(D)
A.不可能是子表
B.只能是子表
C.只能是原子
D.可以是子表或原子
17.一个递归的定义可以用递归过程求解,也可以用非递归过程求解,但单从运行时间来看,通常递归过程比非递归过程(B)。
A.较快B.较慢C.相同D.不一定
18.树中所有结点的度等于所有结点数加(C)。
A.0B.1C.一1D.2
19.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于(C)。
A.nB.n一1C.n+1D.2*n
20.某二叉树的前序序列和后序序列正好相反,则该二叉树一定是B的二叉树。
A)空或只有一个结点。
B)高度等于其结点数。
C)任一结点无左孩子。
D)任一结点无右孩子。
21.n个结点的二叉树,若用二叉链表存贮则非空闲的左、右孩子链域为C。
A)nB)2nC)n-1D)n+1
22.在有n个叶子结点的哈夫曼树中,其结点总数为
D。
(性质3)
A)不确定
B)2n
C)2n+1
D)2n-1
23.已知二叉树叶子数为50,仅有一个孩子的结点数为30,则总结点数为B。
A130B129C131D不确定
24.在一棵度为3的树中,度为3的结点个数为2,度为2的结点个数为1,则度为0的结点个数为(
C
)
A.4
B.5
C.6
D.7
25.假设一个有n个顶点和e条弧的有向图用邻接表表示,则删除与某个顶点vi相关的所有弧的时间复杂度是(
A.O(n)
B.O(e)
C.O(n+e)
D.O(n*e)
26.在无向图中定义顶点vi与vj之间的路径为从vi到达vj的一个(A)。
A、顶点序列B、边序列C、权值总和D、边的条数
27.用某种排序方法对关键字序列(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
则所采用的排序方法是(
D
)
A.选择排序
B.希尔排序
C.归并排序
D.快速排序
28.适于对动态查找表进行高效率查找的组织结构是(
A.有序表
B.分块有序表
C.三叉排序树
D.线性链表
29.如果只想得到1024个元素组成的序列中的前5个最小元素,那么用(D)方法最快。
A、起泡排序B、快速排序C、堆排序D、直接选择排序
三、填空题
1.数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。
2.评价数据结构的两条基本标准是:
存储需要量和运算的时间效率。
3.算法的五个特性是指有穷性、确定性、可行性、输入和输出。
4.在一个带头结点的单循环链表中,p指向尾结点的直接前驱,则指向头结点的指针head可用p表示为head=p->
next->
next。
5.设单链表中指针P指向结点m,若要删除m之后的结点(若存在),则需修改指针的语句是:
P->
next=p->
next->
next
6.设有一个顺序栈S,元素sl,s2,s3,s4,s5,s6依次进栈,如果6个元素的出栈顺序为s2,s3,s4,s6,s5,sl,则顺序栈的容量至少应为3。
7.栈的特点是:
后进先出,栈顶的位置是随着进栈和出栈_操作而变化的。
8.若有一个栈的输入序列为1,2,3,….n,输出序列的第一个元素为n,则第i个输出元素是n-i+1
9.队列的特点是:
先进先出,其插入操作在队尾进行,删除操作在队头进行。
10.有数据元素1、2、3,依次进队列,其出队列序列为123。
11.已知广义表A=(a,(b,(c,d))),则表尾是((b,(c,d))),深度为3。
12.广义表A((a,b,c),(d,e,f))的表头为(a,b,c),长度为2。
13.在串S=“stud”中,子串有11个。
14.设s1=”study”,s2=”hard”,则调用函数strcat(s1,s2)后得到studyhard。
15.将一个n阶三对角矩阵A的三条对角线上的元素按行压缩存放于一个一维数组B中,A[0][0]存放于B[0]中。
对于任意给定数组元素A[I][J],如果它能够在数组B中找到,则它应在2*I+J位置。
16.通常程序在调用另一个程序时,都需要使用一个栈来保存被调用程序内分配的局部变量、形式参数的存储空间以及返回地址。
17.假定一棵树的广义表表示为A(B(E(K,L),C(G),D(H(M),I,J))),则该树的度为3,树的深度为3。
18.深度为n的二叉树最多有2n-1个结点。
19.设二叉树的根为第一层,则第i层上的结点数最多有2i-1。
(性质1)
20.在一棵二叉树中,度为2的结点的个数是5,则叶结点的个数为6。
21.n个结点的完全二叉树,其深度h=[log2n]+1。
22.在一棵树中,有且仅有一个结点没有前驱,称为根结点;
非根结点有且仅有一个双亲。
23.在一棵度为二叉树中,度为2的结点个数为8,则叶结点个数为9
24.已知一颗完全二叉树中共有767结点,则该树中共有384个叶子结点。
25.200个结点的完全二叉树,其深度h=8。
26.对有n个结点的完全二叉树,编号为i(i>
1)结点的双亲结点的编号为i/2,当i%2==0时,该结点是其双亲的左孩子。
27.一颗有6个结点的完全二叉树,其结点按编号存放数据为:
A、B、C、D、E、F,若按中根遍历该树得到的数据序列为:
DBEAFC。
28.n个顶点的无向完全图具有n(n-1)/2条边,n个顶点的有向完全图具有n(n-1)条弧。
29.在一个图中,所有顶点的度之和等于所有边数的2倍。
30.n个顶点的连通图的生成树具有n-1条边。
31.关键路径是指AOE-网中从源点到汇点路径长度最大的路径。
32.顺序查找的平均查找长度为O(n)
折半查找只适用于有序表,且限于顺序存储结构,其平均查找长度为:
O(log2n)
33.。
34.设有100个元素,用折半查找时,最大比较次数是7。
35.若按中序遍历二叉排序树可得到一个关键字的有序序列。
36.在对一组记录(10,50,25,70,35,22,30,85,40)进行直接插入排序时,当把第6个记录22插入到有序表时,为寻找插入位置需比较2次。
37.希尔排序是属于直接插入排序的改进方法。
38.对一组记录(50,40,95,20,15,70,60,45,80)进行简单选择排序时,第4次交换和选择后,未排序记录(即无序数)为50,70,60,95,80。
39.在单链表上难以实现的排序方法有快速排序、堆排序、希尔排序
40.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为___2__。
四、解答题
1.线性表的顺序存储表示和链式存储表示的特点比较。
2.什么是子串?
空串和空格串有什么区别?
串有哪几种机内表示方法,通常采用哪一种?
3.已知广义表A=((a,b),c,(d,e,f))试画出它的存贮结构图。
4.已知广义表A=((a,b),(c,d)),则表头head(A)和表尾Tail(A)分别是?
5.已知一棵树的先根和后根遍历次序如下:
abefgcdhI
efgbchIda
试画出此树,并画出转化后的二叉树,以及此二叉树的中序线索化的逻辑图。
6.对于给定的8个实数W={8,6,23,15,4,20,35,10};
试构造huffman树,并求出每个叶子结点的哈夫曼编码。
7.在关键字序列(5,12,31,43,47,73,81,104)中用折半查找法查找关键字为73和75的数据元素,请写出查找过程。
8.关键字序列(48,42,101,10,6,75,30,29)画出二叉排序树和二叉平衡树(AVL树)。
9.给定有以下的关键字序列,试给出冒泡排序的前俩趟排序结果。
[4656144395101972]
10.一组记录的关键字为(4432659776132721),用归并排序法对该序列进行排序,则二趟归并后的结果为?
五、算法阅读和设计题
1.阅读下面的算法
LinkListmynote(LinkListL)
{//L是不带头结点的单链表的头指针
if(L&
&
L->
next){
q=L;
L=L->
next;
p=L;
S1:
while(p->
next)p=p->
S2:
p->
next=q;
q->
next=NULL;
}
return
L;
}
请回答下列问题:
(1)说明语句S1的功能;
答:
查询链表的尾结点
(2)说明语句组S2的功能;
将第一个结点链接到链表的尾部,作为新的尾结点
(3)设链表表示的线性表为(a1,a2,…,an),写出算法执行后的返回值所表示的线性表。
返回的线性表为(a2,a3,…,an,a1)
2.下列算法的功能是比较两个链串的大小,其返回值为:
comstr(s1,s2)=
请在空白处填入适当的内容。
intcomstr(LinkStrings1,LinkStrings2)
{//s1和s2为两个链串的头指针
while(s1&
s2){
if(s1->
date<
s2->
date)return-1;
date>
date)return1;
①
;
②
}
if(
③
)return-1;
④
)return1;
⑤
;
①S1=S1->
next
②s2=s2->
③s2(或s2!
=NULL或s2&
!
s1)
④s1(或s1!
=NULL或s1&
s2)
⑤return0
3.假设两个队列共享一个循环向量空间
其类型Queue2定义如下:
typedefstruct{
DateTypedata[MaxSize];
intfront,rear;
}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;
rear[i]=[
];
return1;
)
①(i+1)%2(或1-i)
②Q->
rear[i]
③(Q->
rear[i]+)%Maxsize
4.已知二叉树中的结点类型用BinTreeNode表示,被定义为:
structBinTreeNode{ElemTypedara;
BinTreeNode*leftChild,*rightChild:
};
其中data为结点值域,lehChild和rightChild分别为指向左、右子女结点的指针域。
下面函数的功能是返回二叉树BT中值为x的结点所在的层号,请在划有横线的地方填写合适的内容。
IntNodeLevel(BinTreeNode*BT,ElemType&
x){
if(BT==NULL)return一1;
//空树的层号为一1
elseif(BT一>
data==x)return0;
//根结点的层号为0
else{
intc1=NodcLevel(BT一>
leftChild,x);
//向左子树中查找x结点
if(cl>
=0)returncl+1;
intc2=NodeLevel(BT—>
rightChild,X);
if(c2>
=0)returnc2+1;
elsereturn-1;
//在树中不存在x结点返回一l
}
试题及答案
一、
单选题(每题2分,共20分)
1.1.
对一个算法的评价,不包括如下(B)方面的内容。
A.健壮性和可读性B.并行性C.正确性D.时空复杂度
2.2.
在带有头结点的单链表HL中,要向表头插入一个由指针p指向的结点,则执行()。
A.p->
next=HL->
next;
HL->
next=p;
B.p->
next=HL;
HL=p;
C.p->
p=HL;
D.HL=p;
3.3.
对线性表,在下列哪种情况下应当采用链表表示?
()
A.经常需要随机地存取元素B.经常需要进行插入和删除操作
C.表中元素需要占据一片连续的存储空间D.表中元素的个数不变
4.4.
一个栈的输入序列为123,则下列序列中不可能是栈的输出序列的是(C)
A.231B.321
C.312D.123
5.5.
AOV网是一种()。
A.有向图B.无向图C.无向无环图D.有向无环图
6.6.
采用开放定址法处理散列表的冲突时,其平均查找长度()。
A.低于链接法处理冲突B.高于链接法处理冲突
C.与链接法处理冲突相同D.高于二分查找
7.7.
若需要利用形参直接访问实参时,应将形参变量说明为()参数。
A.值B.函数C.指针D.引用
8.8.
在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的()。
A.行号B.列号C.元素值D.非零元素个数
9.9.
快速排序在最坏情况下的时间复杂度为()。
A.O(log2n)B.O(nlog2n)C.0(n)D.0(n2)
10.10.从二叉搜索树中查找一个元素时,其时间复杂度大致为()。
A.O(n)B.O
(1)C.O(log2n)D.O(n2)
二、二、
运算题(每题6分,共24分)
数据结构是指数据及其相互之间的______________。
当结点之间存在M对N(M:
N)的联系时,称这种结构为_____________________。
队列的插入操作是在队列的___尾______进行,删除操作是在队列的____首______进行。
当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是___top==0___(要超出才为满)_______________。
对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为_________,在表尾插入元素的时间复杂度为____________。
设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7,列下标j从0到3,则二维数组W的数据元素共占用_______个字节。
W中第6行的元素和第4列的元素共占用_________个字节。
若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为__________。
广义表A=(a,(a,b),((a,b),c)),则它的深度为____________,它的长度为____________。
二叉树是指度为2的____________________树。
一棵结点数为N的二叉树,其所有结点的度的总和是_____________。
对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个______________。
对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 期末 复习题 答案
![提示](https://static.bdocx.com/images/bang_tan.gif)