下半年全国自考数据结构真题及答案Word下载.docx
- 文档编号:19419380
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:16
- 大小:144.91KB
下半年全国自考数据结构真题及答案Word下载.docx
《下半年全国自考数据结构真题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《下半年全国自考数据结构真题及答案Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
为()
A.15
B.16
C.17
D.18
C
6.二维数组A[8][9]按行优先顺序存储,若数组元素A[2][3]的存储地址为
1087,A[4][7]的存储地址为1153,则数组元素A[6][7]的存储地址为()
A.1207
B.1209
C.1211
D.1213
A
7.在按层次遍历二叉树的算法中,需要借助的辅助数据结构是()
A.队列表
B.栈
C.线性表
D.有序
8.在任意一棵二叉树的前序序列和后序序列中,各叶子之间的相对次序关系()
A.不一定相同
B.都相同
C.都不相同
D.互为逆序
9.若采用孩子兄弟链表作为树的存储结构,则树的后序遍历应采用二叉树的()
A.层次遍历算法
B.前序遍历算法
C.中序遍历算法
D.后序遍历算法
10.若用邻接矩阵表示一个有向图,则其中每一列包含的″1″的个数为()
A.图中每个顶点的入度
B.图中每个顶点的出度
C.图中弧的条数
D.图中连通分量的数目
11.图的邻接矩阵表示法适用于表示()
A.无向图
B.有向图
C.稠密图
D.稀疏图
12.在对n个关键字进行直接选择排序的过程中,每一趟都要从无序区选出最小关键字元素
,则在进行第i趟排序之前,无序区中关键字元素的个数为()
A.i
B.i+1
C.n-i
D.n-i+1
13.下列排序算法中,其时间复杂度和记录的初始排列无关的是()
A.插入排序
B.堆排序
C.快速排序
D.冒泡排序
14.若有序表的关键字序列为(b,c,d,e,f,g,q,r,s,t),则在二分查找关键字b的过程中,先
后进行比较的关键字依次为()
A.f,c,b
B.f,d,b
C.g,c,b
D.g,d,b
15.若在文件中查询年龄在60岁以上的男性及年龄在55岁以上的女性的所有记录,则查询条件
A.(性别=“男”)OR(年龄>
60)OR(性别=“女”)OR(年龄>
55)
B.(性别=“男”)OR(年龄>
60)AND(性别=“女”)OR(年龄>
C.(性别=“男”)AND(年龄>
60)OR(性别=“女”)AND(年龄>
D.(性别=“男”)AND(年龄>
60)AND(性别=“女”)AND(年龄>
二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答
案。
错填、不填均无分。
1.称算法的时间复杂度为O(f(n)),其含义是指算法的执行时间和___的数量级相同。
f(n)
2.在一个长度为n的单链表L中,删除链表中*p的前驱结点的时间复杂度为___。
O(n)
3.假设为循环队列分配的向量空间为Q[20],若队列的长度和队头指针值分别为13和17,则
当前尾指针的值为___。
10
4.设s=″IAMAATHLETE″,t=″GOOD″,则执行下列串操作序列之后得到的sub1为___。
substr(sub1,s,5,2);
substr(sub2,s,6,8);
strcpy(t1,t);
strcat(t1,sub2);
strcat(sub1,t1);
"
AGOODATHLETE"
5.广义表的深度是指___。
广义表展开后所含括号的最大层数
6.一棵含999个结点的完全二叉树的深度为___。
7.含n个顶点的无向连通图中至少含有___条边。
n-1
8.对表长为9000的索引顺序表进行分块查找,假设每一块的长度均为15,且以顺序查找确定
块,则在各记录的查找概率均相等的情况下,其查找成功的平均查找长度为___。
308.5
9.若对关键字序列(43,02,80,48,26,57,15,73,21,24,66)进行一趟增量为3的希
尔排序,则得到的结果为___。
15,02,21,24,26,57,43,66,80,48,73
10.ISAM文件由主索引、___、___和主文件组成。
柱面索引(1分)磁道索引(1分)
三、解答题(本大题共4小题,每小题5分,共20分)
1.某广义表的表头和表尾均为(a,(b,c)),画出该广义表的图形表示。
(说明:
每错2个结点扣1分)
2.已知二叉树的先序序列和中序序列分别为HDACBGFE和ADCBHFEG。
(1)画出该二叉树;
(2)画出与
(1)求得的二叉树对应的森林。
3.已知带权图的邻接表如下所示,其中边表结点的结构为:
依此邻接表从顶点C出发进行深度优先遍历。
(1)画出由此得到的深度优先生成树;
(2)写出遍历过程中得到的从顶点C到其他各顶点的带权路径及其长度。
4.从空树起,依次插入关键字37,50,42,18,48,12,56,30,23,构造一棵二叉排序树
。
(1)画出该二叉排序树;
(2)画出从
(1)所得树中删除关键字为37的结点之后的二叉排序树。
四、算法阅读题(本大题共4小题,每小题5分,共20分)
1.已知用有序链表存储整数集合的元素。
阅读算法f30,并回答下列问题:
(1)写出执行f30(a,b)的返回值,其中a和b分别为指向存储集合{2,4,5,7,9,12}和
{2,4,5,7,9}的链表的头指针;
(2)简述算法f30的功能;
(3)写出算法f30的时间复杂度。
intf30(LinkListha,LinkListhb)
{
//LinkList是带有头结点的单链表
//ha和hb分别为指向存储两个有序整数集合的链表的头指针
LinkListpa,pb;
pa=ha->
next;
pb=hb->
while(pa&
&
pb&
pa->
data==pb->
data)
{pa=pa->
pb=pb->
}
if(pa==NULL&
pb==NULL)return1;
elsereturn0;
(1)0(2分)
(2)判断两个整数集合是否相等,相等则返回1,否则返回0(2分)
(3)O(Min(m,n)),m和n分别为两个整数集合中的元素个数(1分)
2.已知稀疏矩阵采用带行表的三元组表表示,其形式说明如下:
#defineMaxRow100//稀疏矩阵的最大行数
typedefstruct{
inti,j,v;
//行号、列号、元素值
}TriTupleNode;
typedefstruct{
TriTupleNodedata[MaxSize];
intRowTab[MaxRow+1];
//行表
intm,n,t;
//矩阵的行数、列数和非零元个数
}RTriTupleTable;
下列算法f31的功能是,以行优先的顺序输入稀疏矩阵的非零元(行号、列号、元素值),建立
稀疏矩阵的带行表的三元组表存储结构。
请在___处填入合适内容,使其成为一个完整的算法。
(注:
矩阵的行、列下标均从1起计)
voidf31(RTriTupleTable*R)
{inti,k;
scanf(″%d%d%d″,&
R->
m,&
n,&
t);
RowTab[1]=0;
k=1;
//k指示当前输入的非零元的行号
for(i=0;
___;
i++)
{scanf(″%d%d%d″,___,___,&
data[i].v);
while(k<
data[i].i)
{④;
RowTab[k]=i;
i<
t(2分)
data[i].i(1分)
data[i].j(1分)
k++(1分)
3.已知二叉树的存储结构为二叉链表,其类型定义如下:
typedefstructNodeType{
DataTypedata;
structNodeType*lchild,*rchild;
}BinTNode,*BinTree;
阅读算法f32,并回答下列问题:
(1)对于如下图所示的二叉树,画出执行算法f32的结果;
(2)简述算法f32的功能。
BinTreef32(BinTreebt1)
BinTreebt2;
if(bt1==NULL)
bt2=NULL;
else{
bt2=(BinTNode*)malloc(sizeof(BinTNode));
bt2->
data=bt1->
data;
rchild=f32(bt1->
lchild);
lchild=f32(bt1->
rchild);
returnbt2;
(1)(3分)
每错2个结点扣1分,扣完为止)
(2)函数f32返回一个指向复制所得二叉树根结点的指针,新建的二叉树上每个结点的左、右孩
子均为原二叉树上相应结点的右、左孩子(2分)
指出复制给1分,指出左、右孩子对应关系给1分)
4.假设有向图采用邻接表表示法,其定义如下:
VertexNodeadjlist[MaxVertexNum];
intn,e;
//图的当前顶点数和弧数
}ALGraph;
//邻接表类型
其中顶点表结点VertexNode结构为下图(a):
边表结点EdgeNode结构为:
下图(b)
下列算法f33的功能是,对以邻接表表示的有向图进行拓扑排序。
(1)阅读算法f33,并在空缺处填入合适的内容,使其成为一个完整的算法;
(2)对于如下图(c)所示的邻接表,将执行算法f33后的topo[]结果填入给定的数组中。
voidf33(ALGraphG,inttopo[]){
inti,j,k,count=0;
intindegree[MaxVertexNum];
EdgeNode*p;
//p为指向边表结点的指针
QueueQ;
//Q为队列
FindIndegree(G,indegree);
//求各顶点的入度,并置于入度向量indegree
InitQueue(&
Q);
G.n;
if(!
indegree[i])EnQueue(&
Q,i);
while(!
QueueEmpty(&
Q)){
j=①;
topo[j]=++count;
for(p=G.adjlist[j].firstedge;
p;
p=p->
next){
k=p->
adjvex;
(--indegree[k]))②;
if(count<
G.n)printf(″\n图G中存在有环路″);
}
(1)①
②
(2)如下图(d)
(1)①DeQueue(&
Q)(1分)
②EnQueue(&
Q,k)(1分)
(2)如下图:
topo[0]、topo[1]和topo[2]的值都对给1分,topo[7]的值对给1分,其余给
1分)。
五、算法设计题(本大题10分)
1.假设以带头结点的单链表表示有序表,单链表的类型定义如下:
typedefstructnode{
structnode*next
}LinkNode,*LinkList;
编写算法,从有序表A中删除所有和有序表B中元素相同的结点。
参考答案一:
voidf34(LinkListha,LinkListhb)程序头1分
{//hb和hb分别为存放A和B有序链表的头指针
LinkListp,q,r;
初始化1分
p=ha;
q=hb->
while(p->
next&
q){循环语句条件1分
if(p->
next->
data<
q->
data)if语句2分
else{else语句4分
data==q->
data){
r=p->
p->
next=r->
free(r);
}//从A表删除相同的元素结点
q=q->
指针后移1分
参考答案二:
r=ha;
p=ha->
while(p&
data){if语句2分
r=p;
}else{else语句4分
r->
next=p->
free(p);
p=r->
q=q->
所写的算法语句形式与此参考答案有出入,但功能正确,可依此评分标准酌情给分)。
自考乐园,自考学习交流、资料共享的好去处!
自考乐园,自考人自己的家园....
俱乐部id:
5346389(请牢记它哦~在XX贴吧的搜索框中输入俱乐部id,可以直接进入俱乐部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 下半年 全国 自考 数据结构 答案