数据结构复习试题及答案2Word格式.docx
- 文档编号:17974783
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:28
- 大小:91.17KB
数据结构复习试题及答案2Word格式.docx
《数据结构复习试题及答案2Word格式.docx》由会员分享,可在线阅读,更多相关《数据结构复习试题及答案2Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
将所有关键字为同义词的记录存储在同一线性表中
4.建立一个公共溢出区
一旦发生冲突,都溢出表
7.若需要利用形参直接访问实参时,应将形参变量说明为(D)参数。
A.值B.函数C.指针D.引用
7.在稀疏矩阵的带行指针向量的链接存储中,每个单链表中的结点都具有相同的(A)。
A.行号B.列号C.元素值D.非零元素个数
稀疏矩阵
元素个数为t,t/(m*n)<
=0.05
三元组表(a,b,c)
a:
行数
b:
第几个
c:
树值
8.快速排序在最坏情况下的时间复杂度为(D)。
A.O(log2n)B.O(nlog2n)C.0(n)D.0(n2)
排序方法
平均时间
最坏情况
辅助存储
简单排序
O(n*n)
O
(1)
快速排序
O(nlogn)
O(logn)
堆排序
归并排序
O(n)
基数排序
O(d(n+rd))
O(rd)
9.从二叉搜索树中查找一个元素时,其时间复杂度大致为(C)。
A.O(n)B.O
(1)C.O(log2n)D.O(n2)
二叉排序树又叫二叉查找树P227
含有n个结点的二叉排序树的平均查找长度与树的形态有关
树的深度为n,平均查找长度为(n+1)/2,是最差情况,与顺序查找相同
最好的情况时,二叉排序树的形态与折半查找判定树相同,平均查找长度与log2n成正比
平均性能,与log2n是等数量级的
二、运算题(每题6分,共24分)
1.数据结构是指数据及其相互之间的___联系___________。
当结点之间存在M对N(M:
N)的联系时,称这种结构为_________图____________。
2.队列的插入操作是在队列的_____尾____进行,删除操作是在队列的__首________进行。
先进先出
3.当用长度为N的数组顺序存储一个栈时,假定用top==N表示栈空,则表示栈满的条件是______top=0_______________。
P45
4.对于一个长度为n的单链存储的线性表,在表头插入元素的时间复杂度为__O
(1)_______,在表尾插入元素的时间复杂度为___0(n)_________。
5.设W为一个二维数组,其每个数据元素占用4个字节,行下标i从0到7,列下标j从0到3,则二维数组W的数据元素共占用__128____4*4*8_个字节。
W中第6行的元素和第4列的元素共占用__44____(4+8-1)*4___个字节。
若按行顺序存放二维数组W,其起始地址为100,则二维数组元素W[6,3]的起始地址为_108________100+4*2_。
6.广义表A=(a,(a,b),((a,b),c)),则它的深度为__3_________,它的长度为____3________。
广义表的深度定义为表中括号的重数,广义表长度是第一层括号内元素的个数
7.二叉树是指度为2的_______有序_____________树。
一棵结点数为N的二叉树,其所有结点的度的总和是___n-1__________。
8.对一棵二叉搜索树进行中序遍历时,得到的结点序列是一个__有序序列____________。
对一棵由算术表达式组成的二叉语法树进行后序遍历得到的结点序列是该算术表达式的______后缀表达式____________。
9.对于一棵具有n个结点的二叉树,用二叉链表存储时,其指针总数为__2n___________个,其中___n-1____________个用于指向孩子,______n+1___________个指针是空闲的。
P126
10.若对一棵完全二叉树从0开始进行结点的编号,并按此编号把它顺序存储到一维数组A中,即编号为0的结点存储到A[0]中。
其余类推,则A[i]元素的左孩子元素为___2i+1_____,右孩子元素为______2i+2_________,双亲元素为___(i-1)/2_________。
把A[0]当作根模拟。
P125
11.在线性表的散列存储中,处理冲突的常用方法有___开放定址法_____________________和_________链接法____________________两种。
12.当待排序的记录数较大,排序码较随机且对稳定性不作要求时,宜采用____快速___________排序;
当待排序的记录数较大,存储空间允许且要求排序是稳定时,宜采用________归并________________排序。
三、运算题(每题6分,共24分)
1.已知一个65稀疏矩阵如下所示,
(1)给出三元组线性表的顺序存储表示。
6
5
1
3
2
-1
4
-2
7
图7
2.对于图6所示的有向图若存储它采用邻接表,并且每个顶点邻接表中的边结点都是按照终点序号从小到大的次序链接的,试写出:
(1)从顶点①出发进行深度优先搜索所得到的深度优先生成树;
12453
(2)从顶点②出发进行广度优先搜索所得到的广度优先生成树;
23451
四、阅读算法(每题7分,共14分)
1.写出下述算法的功能:
voidAJ(adjlistGL,inti,intn)
{
QueueQ;
InitQueue(Q);
cout<
<
i<
'
'
;
visited[i]=true;
QInsert(Q,i);
while(!
QueueEmpty(Q)){
intk=QDelete(Q);
edgenode*p=GL[k];
while(p!
=NULL)
{
intj=p->
adjvex;
if(!
visited[j])
{
cout<
j<
visited[j]=true;
QInsert(Q,j);
}
p=p->
}
}
}
1.
功能为:
从初始点vi出发广度优先搜索由邻接表GL所表示的图。
五、编写算法(共8分)
HL是单链表的头指针,试写出删除头结点的算法。
ElemTypeDeleFront(LNode*&
HL)
{
if(HL==NULL){
cerr<
"
空表"
endl;
exit
(1);
LNode*p=HL;
HL=HL->
ElemTypetemp=p->
data;
deletep;
returntemp;
}
第二套
一、
1.若有18个元素的有序表存放在一维数组A[19]中,第一个元素放A[1]中,现进行二分查找,则查找A[3]的比较序列的下标依次为(D)
A.1,2,3B.9,5,2,3
C.9,5,3D.9,4,2,3
二、填空题(每空1分,共26分)
1.一个算法的时间复杂度为(n3+n2log2n+14n)/n2,其数量级表示为____O(n)___。
2.假定一棵树的广义表表示为A(C,D(E,F,G),H(I,J)),则树中所含的结点数为_____9___个,树的深度为___3_______,树的度为__3______。
3.向一棵B_树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度___增加一_______。
三、运算题(每题6分,共24分)
1.用克鲁斯卡尔算法得到最小生成树,试写出在最小生成树中依次得到的各条边。
用克鲁斯卡尔算法得到的最小生成树为:
(1,2)3,(4,6)4,(1,3)5,(1,4)8,(2,5)10,(4,7)20
四、编写算法(共8分)
统计出单链表HL中结点的值等于给定值X的结点数。
intCountX(LNode*HL,ElemTypex)
intCountX(LNode*HL,ElemTypex)
{inti=0;
LNode*p=HL;
//i为计数器
while(p!
=NULL)
{if(P->
data==x)i++;
p=p->
}//while,出循环时i中的值即为x结点个数
returni;
}//CountX
第三套
课程测试试题(卷)
一、单选题(每小题2分,共8分)
二、填空题(每空1分,共32分)
1、一种抽象数据类型包括_____数据描述_________和__操作声明___________两个部分。
2、在以HL为表头指针的带表头附加结点的单链表和循环单链表中,判断链表为空的条件分别为___HL->
next=NULL_____________和_____HL=HL->
next_______________。
3、当堆栈采用顺序存储结构时,栈顶元素的值可用——S.stack[s.top]—————表示;
当堆栈采用链接存储结构时,栈顶元素的值可用____HS→data___________表示。
一棵高度为5的理想平衡树中,最少含有___9______个结点,最多含有___31______个结点。
4、在图的邻接表中,每个结点被称为__边结点__________,通常它包含三个域:
一是___邻接点域__________;
二是___权域________;
三是___链域__________。
5、在一个索引文件的索引表中,每个索引项包含对应记录的__索引值域_____和__开始位置域_________两项数据。
6、假定一棵树的广义表表示为A(B(C,D(E,F,G),H(I,J))),则树中所含的结点数为__10_______个,树的深度为___3_____,树的度为__3______
7、在对m阶的B_树插入元素的过程中,每向一个结点插入一个索引项(叶子结点中的索引项为关键字和空指针)后,若该结点的索引项数等于__m____个,则必须把它分裂为___m-1____个结点。
三、运算题(每小题6分,共24分)
2、当它用邻接矩阵表示和邻接表表示时,分别写出从顶点V0出发按深度优先搜索遍历得到的顶点序列和按广度优先搜索遍历等到的顶点序列。
假定每个顶点邻接表中的结点是按顶点序号从大到小的次序链接的。
图
深度优先序列
广度优先序列
邻接矩阵表示时
邻接表表示时
0,1,2,8,3,4,5,6,7,9
0,1,4,2,7,3,8,6,5,9
0,4,3,8,9,5,6,7,1,2
0,4,1,3,7,2,8,6,9,5
四、阅读算法,回答问题(每小题8分,共16分)
2、阅读以下二叉树操作算法,指出该算法的功能。
Template<
calsstype>
voidBinTree<
Type>
:
:
unknown(BinTreeNode<
*t){
BinTreeNode<
Type>
*p=t,*temp;
if(p!
=NULL){
temp=p→leftchild;
p→leftchild=p→rightchild;
p→rightchild=temp;
unknown(p→leftchild);
undnown(p→rightchild);
该算法的功能是:
____交换二叉树的左右子树的递归算法____________________________
五、编写算法(10分)
编写算法,将一个结点类型为Lnode的单链表按逆序链接,即若原单链表中存储元素的次序为a1,……an-1,an,则逆序链接后变为,an,an-1,……a1。
Voidcontrary(Lnode*&
Lnode*P=HL;
HL=NULL;
While(p!
=null)
Lnode*q=p;
P=p→next;
q→next=HL;
HL=q;
课程测试试题(卷)第四套
第一部分选择题(30分)
一、一、项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
4.由两个栈共享一个向量空间的好处是:
A.减少存取时间,降低下溢发生的机率
B.节省存储空间,降低上溢发生的机率
C.减少存取时间,降低上溢发生的机率
D.节省存储空间,降低下溢发生的机率
9.假设以带行表的三元组表表示稀疏矩阵,则和下列行表
对应的稀疏矩阵是(A)
第二部分非选择题(共70分)
二、填空题(本大题共10小题,每小题2分,若有两个空格,每个空格1分,共20分)不写解答过程,将正确的答案写在每小题的空格内。
错填或不填均无分。
20.假设一个9阶的上三角矩阵A按列优先顺序压缩存储在一维数组B中,其中B[0]存储矩阵中第1个元素a1,1,则B[31]中存放的元素是a4,8。
23.在单链表上难以实现的排序方法有快速排序和堆排序,希尔排序。
三、解答题(本大题共4小题,每小题5分,共20分)
27.请画出与下列二叉树对应的森林。
29.已知一个散列表如下图所示:
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)该散列表在等概率查找时查找成功的平均查找长度为多少?
(1)对关键字35、20、33和48进行查找的比较次数为3、2、1、1;
(2)平均查找长度
31.阅读下面的算法
32.假设两个队列共享一个循环向量空间(参见右下图),
其类型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;
rear[i]=[③];
return1;
}
①(i+1)%2(或1-i)
②Q->
rear[i]
③(Q->
rear[i]+)%Maxsize
33.已知二叉树的存储结构为二叉链表,阅读下面算法。
typedefstructnode{
DateTypedata;
Structnode*next;
}ListNode;
typedefListNode*LinkList;
LinkListLeafhead=NULL;
VoidInorder(BinTreeT)
LinkLists;
If(T){
Inorder(T->
lchild);
If((!
T->
lchild)&
&
(!
rchild)){
s=(ListNode*)malloc(sizeof(ListNode));
s->
data=T->
data;
next=Leafhead;
Leafhead=s;
rchild);
对于如下所示的二叉树
33.
(1)Leafhead
F
H
G
D
∧
(2)中序遍历二叉树,按遍历序列中叶子结点数据域的值构建一个以Leafhead为头指针的逆序单链表(或按二叉树中叶子结点数据自右至左链接成一个链表)。
(1)画出执行上述算法后所建立的结构;
(2)说明该算法的功能。
五、算法设计题(本题共10分)
34.阅读下列函数arrange()
intarrange(inta[],int1,inth,intx)
{//1和h分别为数据区的下界和上界
inti,j,t;
i=1;
j=h;
while(i<
j){
j&
a[j]>
=x)j--;
=x)i++;
j)
{t=a[j];
a[j]=a[i];
a[i]=t;
if(a[i]<
x)returni;
elsereturni-1;
(1)写出该函数的功能;
(2)写一个调用上述函数实现下列功能的算法:
对一整型数组b[n]中的元素进行重新排列,将所有负数均调整到数组的低下标端,将所有正数均调整到数组的高下标端,若有零值,则置于两者之间,并返回数组中零元素的个数。
该函数的功能是:
调整整数数组a[]中的元素并返回分界值i,使所有<x的元素均落在a[1..i]上,使所有≥x的元素均落在a[i+1..h]上。
(2)intf(intb[],intn)或intf(intb[],intn)
{{
intp,q;
p=arrange(b,0,n-1,0);
p=arrange(b,0,n-1,1);
q=arrange(b,p+1,n-1,1);
q=arrange(b,0,p,0);
returnq-p;
returnp-q;
}}
课程测试试题(卷)第五套
一、选择题(20分)
9.根据二叉树的定义可知二叉树共有(B)种不同的形态。
(A)4(B)5(C)6(D)7
.10.设有以下四种排序方法,则(B)的空间复杂度最大。
(A)冒泡排序(B)快速排序(C)堆排序(D)希尔排序
二、填空题(30分)
1.设指针变量p指向单链表中结点A,指针变量s指向被插入的结点B,则在结点A的后面插入结点B的操作序列为___s->
next=p->
next,s->
next=s_________________________________。
2.下列程序段的功能实现子串t在主串s中位置的算法,要求在下划线处填上正确语句。
intindex(chars[],chart[])
i=j=0;
while(i<
strlen(s)&
j<
strlen(t))if(s[i]==t[j]){i=i+l;
j=j+l;
}else{i=__i_-j_+1____;
j=__0___;
if(j==strlen(t))return(i-strlen(t));
elsereturn(-1);
三、应用题(30分)
2.设给定一个权值集合W=(3,5,7,9,11),要求根据给定的权值集合构造一棵哈夫曼树并计算哈夫曼树的带权路径长度WPL。
78
四、算法设计题(20分)
1.设计判断单链表中结点是否关于中心对称算法。
2.设计在链式存储结构上建立一棵二叉树的算法。
3.设计判断一棵二叉树是否是二叉排序树的算法。
数据结构试卷参考答案
四、算法设计题
typedefstruct{ints[100];
inttop;
}sqstack;
intlklistsymmetry(lklist*head)
sqstackstack;
stack.top=-1;
lklist*p;
for(p=head;
p!
=0;
p=p->
next){stack.top++
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习 试题 答案