第一范文网 - 专业文章范例文档资料分享平台

太原理工大学数据结构试题入学考试库集及答案

来源:用户分享 时间:2025/5/18 14:38:30 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

{ n=2*i+1;

s[n]=s[i]->lchild; }

if(s[i]->rchild) { n=2*i+2;

s[n]=s[i]->rchild; } i++; }

return 1; }

第六章

一、单项选择题

(1)-(4)AACA (5)-(9)DBCAD (10)-(11)CB

(12)图G是一个非连通分量,至少有两个连通分量。含8个顶点的完全无向图共需28条边,另外一个顶点构成一个连通分量,所以至少含9个顶点。 二、判断题

1.正确2.错误3.正确 4.错误5.正确6.错误 7.正确 8.正确 9.正确

10.正确(若n个顶点依次首尾相接构成一个环的有向强连通图,至少含n条边,即邻接矩阵中至少有n个小于u的非零元素)。

11.错误 12.正确 13.错误 14.正确 15.正确 16.错误 17.错误 18.错误 19.正确 三、填空题

(1)n(n-1)/2 (2)n(n-1) (3)n-1 (4)e (5)2e (6)出边 (7)人边 (8)n (9)有向图

22

(10)O(n) (11)O(n) (12)O(n+e) (13)O(n+e) (14)Kruscal (15)prim

四、算法题

1.将图的深度优先遍历或广度优先遍历算法稍加改造,另设m保存访问的顶点个数,若已访问顶点个数m小于图中顶点个数n,则图G不连通,否则为连通。现将深度优先遍历的非递归算法改造如下:

采用邻接表表示,类型定义如下: #define MaxV 20 typedef struct node {int adjvex;

struct node *next; }Enode;

typedef struct {int data;

Enode *firste; }Vnode;

typedef struct

{Vnode adjlist[MaxV]; int n; int e; }ALGraph;

int connect(ALGraph *G)

{int i,j,Visited[MaxV],m=0,top=0; Enode *p,*S[MaxV]; For(i=0;i

Printf(“%c”,G->adjlist[0].data); m++;

29

S[top++]=p->next; j=p->adjvex;

if(visited[j]==0) {visited[j]=1;

printf(“%c”,G->adjlist[j].data); m++;

s[top++]=G->adjlist[j]->firste; } } }

if(ma) return(0); else

return(1);}

2. (1)解:顺序计算每个顶点链表的表中结点个数,就是该顶点的出度.

算法如下:

void outdegree(graph g,int v) {arcnode *p; int n=0;

p=g.adjlist[v].firstarc; while(p) { n++;

p=p->nextarc;} }

return n; }

void outds(graph g) { int i;

printf(“各顶点出度:、\\n”); for(i=0;i

printf(“顶点%d:%d\\n”,i,outdegree(g,i)); }

(2)void maxoutds(graph g) { int maxv=0,maxds=0i,x; for(i=0;imaxds)

{maxds=x;maxv=1;} }

printf(“最大出度:顶点%d的出度%d”,maxv,maxds); }

(3)void zerods(graph g) { int i,x;

printf(“出度为0的顶点:\\n”); for(i=0;i

printf(“%d”,i); } }

(4)void arc(graph g) { int i,j; arcnode *p;

30

printf(“输入边:\\n”); scanf(“%d,%d”,i,j);

p=g.adjlist[i].firstarc; while(p!=NULL&&p->adjvex!=j) p=p->nextarc; if(p==NULL)

printf(“不存在!”); else

printf(“存在<%d,%d>边:\\n”,i,j); }

第七章

一、单项选择题

(1) 一(5) DDCCD (6)一(9) DCCC 二、填空题

(1)8 (2)15 (3) 4.3 (4)中序 (5)记录的键值 (6)7 (7)63 (8)17 (9)17 (10)O(n) (11)O(log2n) (12)越大

(13)散列函数 (14)处理冲突方法 (15) 装填因子 (16)索引表

(17)该块的起始地址 (18) 100 (19)100 (20)101 (21)?log2(n+1)? (22)同义词 (23)n(n+1)/2 (24) 63 (25) m (26)?m/2? (27)m-1 (28) ?m/2?-1 (29)m (30)?m/2? 三、应用题

1.判定树见下图。

查找成功的平均查找长度

ASL=(1+2*2+3*4+4*6)/13=41/13 查找失败时与键值最多比较次数为4。

2.二叉排序树见右图。在等概率情况下, 查找成功的平均查找长度ASL=29/9≈3.2 查找失败时,与键值最多比较次数是5。

3.构造一棵平衡二叉排序树

的过程见右图。 等概率情况下,查找成功的平均查找长度 ASL=(1+2*2+3*4+4*2)/9≈2.8

查找失败时,与键值的最多比较次数是4。

4.按不同的输入顺序输入4、5、6,建立相应的不同形态的二叉排序树见下图。

5.键值序列:{25,40,33,47,12,66,72,87,94,22,5,58}

31

散列地址: 3 7 0 3 1 0 6 10 6 0 5 3 用拉链法处理冲突,构造的散列表如下图: 33 66 22 ^ 0 12 ^ 1 ^ 2 ^ 25 58 ^ 47 3

4 5 ^ 5 94 ^ ^ 72 6 ^ 7 40 ^ 8 ^ 9 87 ^ 10 在等概率的情况下,查找成功的平均查找长度:

ASL=(7+2*3+3*2)/12=19/12=1.4 11 查找失败的平均查找长度: ASL=(4+2*1+3*2)/12=1 6.已知散列表是:

0 1 2 3 4 5 6 7 8 9 10 11 12 50 21 57 45 37 查找key = 21 57 45 50

h0=key = 8 5 6 11 d=key+1 = 11 3 2 7 h1=(h0+d) = 6 8 8 5 h2=(h1+d) = 10 查找成功比较次数 2 2 3 2

查找成功的平均查找长度ASL=(1+2+2+2+3)/5=2 四、算法设计

1.按中序遍历二叉排序树可得到一个按键值从小到大排列的有序表,利用这个特点来判别二叉树是否为二叉排序树,算法如下:

#define max 99 #define min 0

int judge(BTnode *bt) { BTnode *s[max],*p=bt; int top=0,preval=min; do {

while(p)

{s[top++]=p; p=p->lchild; }

if(top>0) {p=s[--top];

if(p->data

preval=p->data; p=p->rchild; }

}while(p||top>0) return 1; }

32

太原理工大学数据结构试题入学考试库集及答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5xnsu5yjvn2teb98imww_8.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top