全国自考数据结构真题及答案Word文档下载推荐.docx
《全国自考数据结构真题及答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《全国自考数据结构真题及答案Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
next;
r->
next=q;
B.p->
C.r->
p->
D.r->
A
4.若进栈次序为a,b,c,且进栈和出栈可以穿插进行,则可能出现的含3个元素的出栈序列
个数是()
A.3
B.5
C.6
D.7
B
5.假设以数组A[n]存放循环队列的元素,其头指针front指向队头元素的前一个位置、尾指
针rear指向队尾元素所在的存储位置,则在少用一个元素空间的前提下,队列满的判定条件为()
A.rear==front
B.(front+1)%n==rear
C.rear+1==front
D.(rear+1)%n==front
D
6.串的操作函数str定义为:
B.4
C.5
D.6
7.二维数组A[10][6]采用行优先的存储方法,若每个元素占4个存储单元,已知元素
A[3][4]的存储地址为1000,则元素A[4][3]的存储地址为()
A.1020
B.1024
C.1036
D.1240
8.对广义表L=(a,())执行操作tail(L)的结果是()
A.()
B.(())
C.a
D.(a)
9.已知二叉树的中序序列和后序序列均为ABCDEF,则该二叉树的先序序列为()
A.FEDCBA
B.ABCDEF
C.FDECBA
D.FBDCEA
10.已知森林F={T1,T2,T3,T4,T5},各棵树Ti(i=1,2,3,4,5)中所含结点的个数分别
为7,3,5,1,2,则与F对应的二叉树的右子树中的结点个数为()
A.2
B.3
C.8
D.11
11.若非连通无向图G含有21条边,则G的顶点个数至少为()
A.7
B.8
C.21
D.22
12.如图所示的有向图的拓扑序列是()
A.c,d,b,a,e
B.c,a,d,b,e
C.c,d,e,a,b
D.c,a,b,d,e
13.对关键字序列(6,1,4,3,7,2,8,5)进行快速排序时,以第1个元素为基准的一次划
分的结果为()
A.(5,1,4,3,6,2,8,7)
B.(5,1,4,3,2,6,7,8)
C.(5,1,4,3,2,6,8,7)
D.(8,7,6,5,4,3,2,1)
14.分块查找方法将表分为多块,并要求()
A.块内有序
B.块间有序
C.各块等长
D.链式存储
15.便于进行布尔查询的文件组织方式是()
A.顺序文件
B.索引文件
C.散列文件
D.多关键字文件
二、填空题(本大题共10小题,每小题2分,若有两个空格,每个空格1分,共20分)请
在每个空格中填上正确答案。
错填、不填均无分。
1.数据的链式存储结构的特点是借助___表示数据元素之间的逻辑关系。
指针
2.如果需要对线性表频繁进行___或___操作,则不宜采用顺序存储结构。
插入删除
3.如图所示,可以利用一个向量空间同时实现两个类型相同的栈。
其中栈1为空的条件是
top1=0,栈2为空的条件是top2=n-1,则“栈满”的判定条件是___。
top1>
top2(或top2=top1-1或top1=top2+1)
4.静态存储分配的顺序串在进行插入、置换和___等操作时可能发生越界。
联接
5.广义表L=(a,(b,()))的深度为___。
3
6.任意一棵完全二叉树中,度为1的结点数最多为___。
1
7.求最小生成树的克鲁斯卡尔(Kruskal)算法耗用的时间与图中___的数目正相关。
边
8.在5阶B树中,每个结点至多含4个关键字,除根结点之外,其他结点至少含___个关键字。
2
9.若序列中关键字相同的记录在排序前后的相对次序不变,则称该排序算法是___的。
稳定
10.常用的索引顺序文件是___文件和___文件。
ISAMVSAM
三、解答题(本大题共4小题,每小题5分,共20分)
1.
2.由字符集{s,t,a,e,i}及其在电文中出现的频度构建的哈夫曼树如图所示。
已知某段电
文的哈夫曼编码为111000010100,请根据该哈夫曼树进行译码,写出原来的电文。
eatst(说明:
每个字母1分)(5分)
3.已知无向图G的邻接表如图所示,
(1)画出该无向图;
(2)画出该图的广度优先生成森林。
(1)
(2)
(说明:
每错1个顶点或边,扣0.5分,
扣完3分为止)
(3分)
扣完2分为止)
(2分)
4.对序列(48,37,63,96,22,31,50,55,11)进行升序的堆排序,写出构建的初始(大根
)堆及前两趟重建堆之后的序列状态。
初始堆:
第1趟:
第2趟:
(96,55,63,48,22,31,50,37,11)(2分)
(63,55,50,48,22,31,11,37,96)(2分)
(55,48,50,37,22,31,11,63,96)(1分)
四、算法阅读题(本大题共4小题,每小题5分,共20分)
1.阅读下列算法,并回答问题:
(1)无向图G如图所示,写出算法f30(&
G)的返回值;
(2)简述算法f30的功能。
#defineMaxNum20
intvisited[MaxNum];
voidDFS(Graph*g,inti);
/*从顶点vi出发进行深度优先搜索,访问顶点vj时置visited[j]为1*/
intf30(Graph*g)
{inti,k;
for(i=0;
i<
g->
n;
i++)/*g->
n为图g的顶点数目*/
visited[i]=0;
for(i=k=0;
n;
i++)
if(visited[i]==0)
{k++;
DFS(g,i);
}
returnk;
(1)3(3分)
(2)返回无向图g中连通分量的个数。
2.假设学生成绩按学号增序存储在带头结点的单链表中,类型定义如下:
typedefstructNode{
intid;
/*学号*/
intscore;
/*成绩*/
structNode*next;
}LNode,*LinkList;
阅读算法f31,并回答问题:
(2)简述算法f31的功能。
voidf31(LinkListA,LinkListB)
{LinkListp,q;
p=A->
next;
q=B->
while(p&
&
q)
{if(p->
id<
id)
p=p->
elseif(p->
id>
q=q->
else
{if(p->
score<
60)
if(q->
score=q->
score;
elsep->
score=60;
自考乐园,自考学习交流、资料共享的好去处!
自考乐园,自考人自己的家园....
俱乐部id:
5346389(请牢记它哦~在XX贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部
3.阅读下列算法,并回答问题:
(1)设串s="OneWorldOneDream",t="One",pos是一维整型数组,写出算法
f32(s,t,pos)执行之后得到的返回值和pos中的值;
(2)简述算法f32的功能。
intstrlen(char*s);
/*返回串s的长度*/
intindex(char*st,char*t);
/*若串t在串st中出现,则返回在串st中首次出现的下标值,否则返回-1*/
intf32(char*s,char*t,intpos[])
{inti,j,k,ls,lt;
ls=strlen(s);
lt=strlen(t);
if(ls==0||lt==0)return-1;
k=0;
i=0;
do{
j=index(s+i,t);
if(j>
=0)
{pos[k++]=i+j;
i+=j+it;
}while(i+it<
=is&
j>
=0);
returnk;
(1)2;
pos[0]=0,pos[1]=8(说明:
每个值1分)(3分)
(2)返回串t在s中出现的次数,并将每次出现的位置依次存放在数组pos中。
4.二叉排序树的存储结构定义为以下类型:
typedefintKeyType;
typedefstructnode{
KeyTypekey;
/*关键字项*/
InfoTypeotherinfo;
/*其它数据项*/
structnode*lchild,*rchild;
/*左、右孩子指针*/
}BSTNode,*BSTree;
阅读算法f33,并回答问题:
(1)对如图所示的二叉排序树T,写出f33(T,8)返回的指针所指结点的关键字;
(2)在哪些情况下算法f33返回空指针?
(3)简述算法f33的功能。
BSTNode*f33(BSTreeT,KeyTypex)
{BSTNode*p;
if(T==NULL)returnNULL;
p=f33(T->
lchild,x);
if(p!
=NULL)returnp;
if(T->
key>
x)returnT;
returnf33(T->
rchild,x);
(3)
(1)10(2分)
(2)T是空树或T中所有结点的关键字均不大于给定值x时,返回空指针。
(3)如果二叉排序树T中存在含