07年自考数据结构真题及答案Word格式.docx
- 文档编号:21163505
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:11
- 大小:231.85KB
07年自考数据结构真题及答案Word格式.docx
《07年自考数据结构真题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《07年自考数据结构真题及答案Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
next=p;
B.s->
q->
C.p->
next=q;
D.s->
p->
3.在计算机内实现递归算法时所需的辅助数据结构是(A)
A.栈B.队列
C.树D.图
4.假设以数组A[m]存放循环队列的元素。
已知队列的长度为length,指针rear指向队
尾元素的下一个存储位置,则队头元素所在的存储位置为(B)
A.(rear-length+m+1)%mB.(rear-length+m)%m
C.(rear-length+m-1)%mD.(rear-length)%m
5.通常将链串的结点大小设置为大于1是为了(B)
A.提高串匹配效率B.提高存储密度
C.便于插入操作D.便于删除操作
6.带行表的三元组表是稀疏矩阵的一种(A)
A.顺序存储结构B.链式存储结构
C.索引存储结构D.散列存储结构
7.表头和表尾均为空表的广义表是(B)
A.()B.(())
C.((()))D.((),())
8.用二叉链表表示具有n个结点的二叉树时,值为空的指针域的个数为(C)
(P75具有n个结点的二叉树的二叉链表表示中,一共有2n个指针域,其中n-1个用来指示结点的左、右孩子,其余的n+1个指针域为空)
A.n-1B.n
C.n+lD.2n
9.为便于判别有向图中是否存在回路,可借助于(D)
A.广度优先搜索算法B.最小生成树算法
C.最短路径算法D.拓扑排序算法
10.连通网的最小生成树是其所有生成树中(D)
A.顶点集最小的生成树B.边集最小的生成树
C.顶点权值之和最小的生成树D.边的权值之和最小的生成树
11.按排序过程中依据的原则分类,快速排序属于(C)
A.插入类的排序方法B.选择类的排序方法
C.交换类的排序方法D.归并类的排序方法
12.下列关键字序列中,构成小根堆的是(C)
(P152小根堆指根结点的关键字是树中所有结点关键字中最小的)
A.{84,46,62,41,28,58,15,37}
B.{84,62,58,46,41,37,28,15}
C.{15,28,46,37,84,41,58,62}
D.{15,28,46,37,84,58,62,41}
13.在长度为32的有序表中进行二分查找时,所需进行的关键字比较次数最多为(C)
A.4B.5
C.6D.7
14.假设在构建散列表时,采用线性探测解决冲突。
若连续插入的n个关键字都是同义
词,则查找其中最后插入的关键字时,所需进行的比较次数为(B)
A.n-1B.n
C.n+lD.n+2
15.散列文件也称为(C)
A.顺序文件B.索引文件
C.直接存取文件D.间接存取文件
二、填空题(本大题共10小题,每小题2分,共20分)
请在每小题的空格中填上正确答案。
错填、不填均无分。
16.数据的逻辑结构描述数据元素之间的_______逻辑关系__________,与存储方式无关。
17.在一个长度为100的顺序表中删除第10个元素时,需移动________90___________个元素。
18.队列的队尾位置通常是随着______入队________操作而变化的。
19.两个空串联接得到的串的长度为_______0____________。
20.设对称矩阵A压缩存储在一维数组B中,其中矩阵的第一个元素a11存储在B[0],元素a52存储在B[11],则矩阵元素a36存储在B[______17________]中。
21.已知一棵哈夫曼树含有60个叶子结点,
则该树中共有_________59_______个非叶子结点。
22.如图所示的有向图中含有
________2_______个强连通分量。
23.已知一组关键字为{15,36,28,97,24,78,47,52,13,86},其中每相邻两个关键字构成一个有序子序列。
对这些子序列进行一趟两两归并的结果是_{15,28,36,97,24,47,52,78,13,86}_____________。
24.从空树起,依次插入关键字1l,27,35,48,52,66和73构造所得的二叉排序树,在等概率查找的假设下,查找成功时的平均查找长度为_____4_______________。
25.控制区间和控制区域是______VSAM__________文件的逻辑存储单位。
三、解答题(本大题共4小题,每小题5分,共20分)
26.利用广义表的head和tail操作,可从广义表
L=((a,b),(c,d))
中分解得到原子c,其操作表达式为
head(head(tail(L)));
分别写出从下列广义表中分解得到b的操作表达式。
(1)L1=(a.,b,c,d);
(2)L2=(((a),(b),(c),(d)))。
(1)head(tail(L1))
(2)head(head(tail(head(L3))))
(P67取表头head(LS),取表尾tail(LS))
27.画出与如图所示森林对应的二叉树。
(左边是孩子右边是兄弟)
28.已知有向图G的定义如下:
G=(V,E)
V={a,b,c,d,e}
E={<
a,b>
,<
a,c>
,<
b,c>
b,d>
c,d>
e,c>
e,d>
}
(1)画出G的图形;
(2)写出G的全部拓扑序列。
(1)
(2)abecd
eabcd
aebcd
29.已知3阶B-树如图所示。
(1)画出将关键字88插入之后的B-树;
(2)画出将关键字47和66依次插入之后的B-树。
(1)
(2)
四、算法阅读题(本大题共4小题,每小题5分,共20分)
30.假设某个不设头指针的无头结点单向循环链表的长度大于1,s为指向链表中某个结点的指针。
算法f30的功能是,删除并返回链表中指针s所指结点的前驱。
请在空缺处填入合适的内容,使其成为完整的算法。
typedefstructnode{
DataTypedata;
structnode*next;
}*LinkList;
DataTypef30(LinkLists){
LinkListpre,p;
DataTypee;
pre=s;
p=s->
while(p->
next!
=s){
pre=p;
_________p=p->
next__;
pre->
next=s(或p->
next);
e=p->
data;
free(p);
returne;
(1)
(3)
31.算法f31的功能是清空带头结点的链队列Q。
请在空缺处填入合适的内容,使其成为一个完整的算法。
typedefstructnode{
structnode*next;
}QueueNode;
typedefstruct{
QueueNode*front;
//队头指针
QueueNode*rear;
//队尾指针
}LinkQueue;
voidf31(LinkQueue*Q){
QueueNode*p,*s;
p=Q->
front->
next;
while(p!
=NULL){
s=p;
p=p->
next;
free(s);
________Q->
next=NULL;
Q->
rear=_______Q->
front_______;
(3)
32.假设采用动态存储分配的顺序串HString作为串的存储结构。
该类型实现的串操作函数原型说明如下:
voidstrinit(HStrings);
//置s为空串
intstrlen(HStrings);
//求串s的长度
voidstrcpy(HStringto,HStringfrom);
//将串from复制到串to
voidstrcat(HStringto,HStringfrom);
//将串from联接到串to的末尾
intstrcmp(HStringsl,HStrings2);
//比较串sl和s2的大小,当s1<
s2,s1=s2或s1>
s2时,
//返回值小于0,等于0或大于0
HStringsubstr(HStrings,inti,intm);
//返回串s中从第i(0≤I≤strlen(s)-m)个字符起长度为m的子串
阅读下列算法f32,并回答问题:
(1)设串S=″abcdabcd″,T=″bcd″,V=″bcda″,写出执行f32(S,T,V)之后的S;
(2)简述算法f32的功能。
voidf32(HStringS,HStringT,HStringV){
intm,n,pos,i;
HStringnews;
strinit(news);
n=strlen(S);
m=strlen(T);
pos=i=0;
while(i<
=n-m){
if(stremp(substr(S,i,m),T)!
=0)i++;
else{
strcat(news,substr(S,pos,i-pos));
strcat(news,V);
pos=i=i+m;
strcat(news,substr(S,pos,n-pos));
strcpy(S,news)
(1)S=”abcdaabcda”
(2)串的置换操作,用串V置换串S中的子串T
33.假设以二叉链表作为二叉树的存储结构,其类型定义如下:
typedefstructnode{
chardata;
structnode*lchild,*rchild;
//左右孩子指针
}BinTNode,*BinTree;
阅读下列算法f33,并回答问题:
(1)已知如图所示的二叉树以T为指向根结点的指针,画出执行f33(T)后的二叉树;
(2)简述算法f33的功能。
voidf33(BinTreeT){
if(T){
f33(T->
lchild);
f33(T->
rchild);
if((!
T->
lchild)&
&
T->
rchild){
T->
lchild=T->
rchild;
rchild=NULL;
(2)对二叉树的每个结点,如果其左孩子为空(右孩子不为空),则将其有孩子设置为左孩子
五、算法设计题(本大题10分)
34.假设以带头结点的单链表表示有序表,单链表的类型定义如下:
intdata;
structnode*next;
}LinkNode,*LinkList;
编写算法,输入n个整数构造一个元素值互不相同的递增有序链表(即相同的整数只取一个)。
算法的函数原型给定为
LinkListf34(intn);
LinkListf34(intn){
LinkListL,p,q,s;
-------------//初始化2分
inte,i;
L=(LinkList)malloc(sizeof(LinkNode));
L->
next=NULL;
for(i=1;
i<
=n;
i++){----------//循环架构1分
scanf(“%d”,&
e);
---------//输入及查找准备2分
p=L;
q=p->
next;
while(q&
data<
e){-----//查找插入位置2分
p=q;
q=q->
if(!
q||q->
data>
e){--------------//插入2分
s=(LinkList)malloc(sizeof(LinkNode));
s->
data=e;
s->
next=q;
p->
next=s;
returnL;
--------------//返回1分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 07 自考 数据结构 答案