2005年下半年全国自考数据结构真题及答案

2026/1/27 6:55:49

7. 在有向图中,以顶点v为终点的边的数目称为v的___。

答案:入度

8. 当关键字的取值范围是实数集合时,无法进行箱排序和___排序。

答案:基数

9. 产生冲突现象的两个关键字称为该散列函数的___。

答案:同义词

10. 假设散列文件中一个桶能存放m个记录,则桶“溢出”的含义是,当需要插入新的记录时

,该桶中___。

答案:已有m个同义词的记录(或:已有m个记录;或:已满)

三、解答题(本大题共4小题,每小题5分,共20分)

1. 假设以数组seqn[m]存放循环队列的元素,设变量rear和quelen分别指示循

环队列中队尾元素的位置和元素的个数。 (1)写出队满的条件表达式; (2)写出队空的条件表达式;

(3)设m=40,rear=13,quelen=19,求队头元素的位置; (4)写出一般情况下队头元素位置的表达式。 答案:(1)quelen=m(1分) (2)quelen=0(1分) (3)35(1分)

(4)(rear-quelen+1+m)%m(2分)

2. 已知一棵二叉树的中序序列为ABCDEFG,层序序列为BAFEGCD,请画出该二叉树。

答案:(每错一个结点扣1分,扣完5分为止)

3. 画出下图所示有向图的所有强连通分量。

答案:该图的强连通分量分别为:

4. 对7个关键字进行快速排序,在最好的情况下仅需进行10次关键字的比较。

(1)假设关键字集合为{1,2,3,4,5,6,7},试举出能达到上述结果的初始关键字序列; (2)对所举序列进行快速排序,写出排序过程。 答案:(1)4713652(3分)

(2)初始关键字4713652

一次划分后得(231)4(657)(1分)

继续划分后得(1)2(3)(5)6(7)(1分)

(说明:答案不唯一,只要满足题目要求均得分。)

四、算法阅读题(本大题共4小题,每小题5分,共20分)

1. 阅读下列算法,并回答问题:

(1)设顺序表L=(3,7,11,14,20,51),写出执行f30(&L,15)之后的L; (2)设顺序表L=(4,7,10,14,20,51),写出执行f30(&L,10)之后的L; (3)简述算法的功能。

void f30(SeqList*L, DataType x)

{

int i =0, j;

while (ilength && x>L->data[i])i++; if(ilength && x==L->data[i]) { for(j=i+1;jlength;j++) L->data[j-1]=L->data[j]; L->length--;

} else {

for(j=L->length;j>i;j--)

L->data[j]=L->data[j-1]; L->data[i]=x; L->length++;

} }

答案:(1)(3,7,11,14,15,20,51)(2分) (2)(4,7,14,20,51)(1分)

(3)当非递减顺序表中存在元素x时,从表中删除该元素;否则将x保序插入到顺序表中。(2分)

2. 已知图的邻接表表示的形式说明如下:

#define MaxNum50//图的最大顶点数

typedef struct node {

intadjvex;//邻接点域

struct node *next; //链指针域 } EdgeNode;//边表结点结构描述

typedef struct {

char vertex;//顶点域

EdgeNode *firstedge;//边表头指针 } VertexNode;//顶点表结点结构描述

typedef struct {

VertexNode adjlist[MaxNum];//邻接表 int n, e;//图中当前的顶点数和边数 } ALGraph;//邻接表结构描述

下列算法输出图G的深度优先生成树(或森林)的边。阅读算法,并在空缺处填入合适的内容,使 其成为一个完整的算法。

typedef enum {FALSE, TRUE} Boolean;

Boolean visited[MaxNum];

void DFSForest(ALGraph *G){

int i;

for(i=0;in;i++) visited[i]=___;

for(i=0;in;i++) if (!visited[i]) DFSTree(G,i);

}

void DFSTree(ALGraph *G, int i) {

EdgeNode *p;

visited[i]=TRUE;

p=G->adjlist[i]. firstedge;

while(p!=NULL){

if(!visited[p->adjvex]){

printf(″<%c,%c>″,G->adjlist[i]. vertex, G->adjlist[p->adjvex]. vertex); ___;

}

___;

} }

答案:FALSE(1分)

DFSTree(G,P->adjvex)(2分) p=p->next(2分)

3. 阅读下列算法,并回答问题:

(1)假设数组L[8]={3,0,5,1,6,4,2,7},写出执行函数调用f32(L,8)后的L; (2)写出上述函数调用过程中进行元素交换操作的总次数。 void f32(int R[],int n){ int i,t;

for (i=0;i

R[R[i]]=R[i]; R[i]=t;

} }

答案:(1)L[8]={0,1,2,3,4,5,6,7,}(3分) (2)共进行5次元素交换。(2分)

4.

答案:(1)NULL(1分) (2)p->next=H[j](2分) (3)p=q(2分)

五、算法设计题(本大题10分)

1. 假设以带双亲指针的二叉链表作为二叉树的存储结构,其结点结构的类型说明如下所示:

typedef char DataType;


2005年下半年全国自考数据结构真题及答案.doc 将本文的Word文档下载到电脑
搜索更多关于: 2005年下半年全国自考数据结构真题及答案 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219