04年工硕数据结构试题及答案

注:1、除第九题外,其他各题每题10分,第九题20分。

2、所有试题的答案写在答题纸上。

一、判断下列叙述的对错。

(1)线性表的逻辑顺序与物理顺序总是一致的。

(2)线性表的顺序存储表示优于链式存储表示。

(3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

(4)二维数组是其数组元素为线性表的线性表。

(5)每种数据结构都应具备三种基本运算:插入、删除和搜索。

二、设单链表中结点的结构为

typedef struct node { file://链表结点定义

ElemType data; file://数据

struct node * Link; file://结点后继指针

} ListNode;

(1)已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作?

A. s->link = p; p->link = s;

B. s->link = p->link; p->link = s;

C. s->link = p->link; p = s;

D. p->link = s; s->link = p;

(2)非空的循环单链表first的尾结点(由p所指向)满足:

A. p->link == NULL;

B. p == NULL;

C. p->link == first;

D. p == first;

三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?

四、一棵具有n个结点的理想平衡二叉树(即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示(注意n可能为0)?

五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。

(1)对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为(A),所有边链表中边结点的总数为(B)。

(2)采用邻接表存储的图的深度优先遍历算法类似于树的(C)。

(3)采用邻接表存储的图的广度优先遍历算法类似于树的(D)。

(4)判断有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用(E)。

供选择的答案

A:①n②n+1③n-1④n+e

B:①e/2②e③2e④n+e

C~D:①中根遍历②先根遍历③后根遍历④按层次遍历

E:①求关键路径的方法②求最短路径的Dijkstra方法

③深度优先遍历算法④广度优先遍历算法

六、填空题

(1)在用于表示有向图的邻接矩阵中,对第i行的元素进行累加,可得到第i个顶点的(①)度,而对第j列的元素进行累加,可得到第j个顶点的(②)度。

(2)一个连通图的生成树是该图的(③)连通子图。若这个连通图有n个顶点,则它的生成树有(④)条边。

(3)给定序列{100, 86, 48, 73, 35, 39, 42, 57, 66, 21},按堆结构的定义,则它一定(⑤)堆。

(4)在进行直接插入排序时,其数据比较次数与数据的初始排列(⑥)关;而在进行直接选择排序时,其数据比较次数与数据的初始排列(⑦)关。

(5)利用关键码分别为10, 20, 30, 40的四个结点,能构造出(⑧)种不同的二叉搜索树。

七、设带表头结点的双向链表的定义为

typedef int ElemType;

typedef struct dnode { file://双向链表结点定义

ElemType data; file://数据

struct dnode * lLink, * rLink; file://结点前驱与后继指针

DblNode;

typedef DblNode * DblList; file://双向链表

试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域lLink把所有结点按照其值从小到大的顺序连接起来。

八、设有一个关键码的输入序列{ 55, 31, 11, 37, 46, 73, 63, 02, 07 ,

(1)从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。

(2)计算该平衡二叉搜索树在等概率下的查找成功的平均查找长度和查找不成功的平均查找长度。

九、下面是求连通网络的最小生成树的Prim算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。

const int MaxInt = INT_MAX; file://INT_MAX的值在中

const int n = 6; file://图的顶点数,应由用户定义

typedef int AdjMatrix[n>[n>; file://用二维数组作为邻接矩阵表示

typedef struct file://生成树的边结点

int fromVex, toVex; file://边的起点与终点

int weight; file://边上的权值

TreeEdgeNode;

typedef TreeEdgeNode MST[n-1>; file://最小生成树定义

void PrimMST ( AdjMatrix G, MST T, int rt ) {

file://从顶点rt出发构造图G的最小生成树T,rt成为树的根结点

TreeEdgeNode e; int i, k = 0, min, minpos, v;

for ( i = 0; i

if ( i != rt ) {

T[k>.fromVex = rt;

T[k>.toVex = I ;

T[k++>.weight = G[rt>;

}

for ( k = 0; k

min = MaxInt ;

for ( i = k; i

if ( T.weight

{ min = T.weight; minpos = i ; }

if ( min == MaxInt ) file://图不连通,出错处理

{ cerr 《“Graph is disconnected!”《 endl; exit(1) ; }

e = T[minpos>; T[minpos> = T[k> ; T[k> = e;

v = T[k>.toVex;

for ( i = k+1; i

if ( G[v>[T.toVex>

T.weight = G[v>[T.toVex>;

T.fromVex = v ;

参考答案

一、(1)错(2)错(3)对(4)错(5)对

二、(1) B (2) C

三、3

四、h =élog2(n+1)ù-1

五、A.①B.③C.②D.④E.③

六、①出②入③极小④n-1

⑤是(最小)⑥有⑦无⑧14

七、算法如下

void sort ( DblNode * L ) {

DblNode * s = L->rlink;

file://指针s指向待插入结点,初始时指向第一个结点

while ( s != NULL ) { file://处理所有结点

pre = L; p = L->lLink;

file://指针p指向待比较的结点, pre是p的前驱指针

while ( p != NULL && s->data

data )

file://循lLink链寻找结点*s的插入位置

{ pre = p; p = p->lLink; }

pre->lLink = s; s->lLink = p; s = s->rLink;

file://结点*s在lLink方向插入到*pre与*p之间

}

八、关键码的输入序列{ 55, 31, 11, 37, 46, 73, 63, 02, 07 }

在等概率下查找成功的平均查找长度

在等概率下查找不成功的平均查找长度

①T[k>.toVex = i

②min = MaxInt

③minpos = i

④exit(1)

⑤T.fromVex = v

注:1、除第九题外,其他各题每题10分,第九题20分。

2、所有试题的答案写在答题纸上。

一、判断下列叙述的对错。

(1)线性表的逻辑顺序与物理顺序总是一致的。

(2)线性表的顺序存储表示优于链式存储表示。

(3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

(4)二维数组是其数组元素为线性表的线性表。

(5)每种数据结构都应具备三种基本运算:插入、删除和搜索。

二、设单链表中结点的结构为

typedef struct node { file://链表结点定义

ElemType data; file://数据

struct node * Link; file://结点后继指针

} ListNode;

(1)已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作?

A. s->link = p; p->link = s;

B. s->link = p->link; p->link = s;

C. s->link = p->link; p = s;

D. p->link = s; s->link = p;

(2)非空的循环单链表first的尾结点(由p所指向)满足:

A. p->link == NULL;

B. p == NULL;

C. p->link == first;

D. p == first;

三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?

四、一棵具有n个结点的理想平衡二叉树(即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示(注意n可能为0)?

五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。

(1)对于一个具有n个结点和e条边的无向图,若采用邻接表表示,则顶点表的大小为(A),所有边链表中边结点的总数为(B)。

(2)采用邻接表存储的图的深度优先遍历算法类似于树的(C)。

(3)采用邻接表存储的图的广度优先遍历算法类似于树的(D)。

(4)判断有向图是否存在回路,除了可以利用拓扑排序方法外,还可以利用(E)。

供选择的答案

A:①n②n+1③n-1④n+e

B:①e/2②e③2e④n+e

C~D:①中根遍历②先根遍历③后根遍历④按层次遍历

E:①求关键路径的方法②求最短路径的Dijkstra方法

③深度优先遍历算法④广度优先遍历算法

六、填空题

(1)在用于表示有向图的邻接矩阵中,对第i行的元素进行累加,可得到第i个顶点的(①)度,而对第j列的元素进行累加,可得到第j个顶点的(②)度。

(2)一个连通图的生成树是该图的(③)连通子图。若这个连通图有n个顶点,则它的生成树有(④)条边。

(3)给定序列{100, 86, 48, 73, 35, 39, 42, 57, 66, 21},按堆结构的定义,则它一定(⑤)堆。

(4)在进行直接插入排序时,其数据比较次数与数据的初始排列(⑥)关;而在进行直接选择排序时,其数据比较次数与数据的初始排列(⑦)关。

(5)利用关键码分别为10, 20, 30, 40的四个结点,能构造出(⑧)种不同的二叉搜索树。

七、设带表头结点的双向链表的定义为

typedef int ElemType;

typedef struct dnode { file://双向链表结点定义

ElemType data; file://数据

struct dnode * lLink, * rLink; file://结点前驱与后继指针

DblNode;

typedef DblNode * DblList; file://双向链表

试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域lLink把所有结点按照其值从小到大的顺序连接起来。

八、设有一个关键码的输入序列{ 55, 31, 11, 37, 46, 73, 63, 02, 07 ,

(1)从空树开始构造平衡二叉搜索树,画出每加入一个新结点时二叉树的形态。若发生不平衡,指明需做的平衡旋转的类型及平衡旋转的结果。

(2)计算该平衡二叉搜索树在等概率下的查找成功的平均查找长度和查找不成功的平均查找长度。

九、下面是求连通网络的最小生成树的Prim算法的实现,中间有5个地方缺失,请阅读程序后将它们补上。

const int MaxInt = INT_MAX; file://INT_MAX的值在中

const int n = 6; file://图的顶点数,应由用户定义

typedef int AdjMatrix[n>[n>; file://用二维数组作为邻接矩阵表示

typedef struct file://生成树的边结点

int fromVex, toVex; file://边的起点与终点

int weight; file://边上的权值

TreeEdgeNode;

typedef TreeEdgeNode MST[n-1>; file://最小生成树定义

void PrimMST ( AdjMatrix G, MST T, int rt ) {

file://从顶点rt出发构造图G的最小生成树T,rt成为树的根结点

TreeEdgeNode e; int i, k = 0, min, minpos, v;

for ( i = 0; i

if ( i != rt ) {

T[k>.fromVex = rt;

T[k>.toVex = I ;

T[k++>.weight = G[rt>;

}

for ( k = 0; k

min = MaxInt ;

for ( i = k; i

if ( T.weight

{ min = T.weight; minpos = i ; }

if ( min == MaxInt ) file://图不连通,出错处理

{ cerr 《“Graph is disconnected!”《 endl; exit(1) ; }

e = T[minpos>; T[minpos> = T[k> ; T[k> = e;

v = T[k>.toVex;

for ( i = k+1; i

if ( G[v>[T.toVex>

T.weight = G[v>[T.toVex>;

T.fromVex = v ;

参考答案

一、(1)错(2)错(3)对(4)错(5)对

二、(1) B (2) C

三、3

四、h =élog2(n+1)ù-1

五、A.①B.③C.②D.④E.③

六、①出②入③极小④n-1

⑤是(最小)⑥有⑦无⑧14

七、算法如下

void sort ( DblNode * L ) {

DblNode * s = L->rlink;

file://指针s指向待插入结点,初始时指向第一个结点

while ( s != NULL ) { file://处理所有结点

pre = L; p = L->lLink;

file://指针p指向待比较的结点, pre是p的前驱指针

while ( p != NULL && s->data

data )

file://循lLink链寻找结点*s的插入位置

{ pre = p; p = p->lLink; }

pre->lLink = s; s->lLink = p; s = s->rLink;

file://结点*s在lLink方向插入到*pre与*p之间

}

八、关键码的输入序列{ 55, 31, 11, 37, 46, 73, 63, 02, 07 }

在等概率下查找成功的平均查找长度

在等概率下查找不成功的平均查找长度

①T[k>.toVex = i

②min = MaxInt

③minpos = i

④exit(1)

⑤T.fromVex = v


相关文章

  • 工硕自然辩证法作业-防火案例思考
  • 对西直门嘉茂购物中心大火的一点思考 2011年12月15日下午,北京西直门嘉茂购物中心施工现场发生火灾,西直门立交桥是北京的交通枢纽,届时北京天干物燥,发生火灾时附近浓烟滚滚.当天下午火灾就被扑灭,北京消防官方微博上发出着火的真正原因:是由 ...查看


  • 福州大学课程表2016年5-7月份周末班(工硕)
  • 福州大学课程表(非全日制工程硕士研究生2016年周末班公共课5-7月份 ) 备注:1. 上课前学生需自行购买教材, 2. 选课学生务必登录研究生教育管理信息系统,查看本人所选的课程及上课班级 3. 上课时间: 上午1.2节08:30-10: ...查看


  • 信息化能力建设公共课考试题库4
  • 2013专业技术人员继续教育班(考试) 一.判断题 (本大题共20小题,每小题2分,共40分) 1.信息产业经历了一个由独立.分散.不均衡到信息技术一体化的综合集成发展的过程.( ) 本题得 2 分 正确 错误 参考答案:正确 试题解析: ...查看


  • 2015二级建造师继续教育05
  • 一.判断题 (本大题共20小题,每小题2分,共40分) 1.普通螺栓按制作精度的A级,称为精制螺栓. ( ) 本题得 2 分 正确 错误 参考答案:正确 试题解析: 显示 显示答案 2.施工现场有多台塔式起重机作业时,使用单位应当组织制定防 ...查看


  • 行政职业能力测试-
  • 试题1:行政组织纵向层次协调包括行政指导和( ). A: 行政授权 B: 行政参与 C: 行政分权 D: 行政委托 答案: A 试题2:下列选项中属于我国行政系统的内部监督的是( ). A: 立法监督 B: 司法监督 C: 审计监督 D: ...查看


  • 2015年度建筑工程(主项)考试(含标准答案)
  • 2015年度建筑工程(主项)考试 考试人员:陈忠东/试卷总分: 100/考试总时长: 120分钟 一.判断题 (本大题共20小题,每小题2分,共40分) 1.国标规定钢结构用钢板冲击韧性试样应相对于轧制方向纵向取样.( ) 本题得 0 分 ...查看


  • (强化卷)强化卷电算化答案
  • <会计电算化>考前强化试卷 一.单选题 1. 下列叙述错误的是( ). A. 会计电算化有狭义和广义之分 B. 相对于会计电算化而言,会计信息化是一次质的飞跃 C. 会计信息化系统是企业管理信息系统的一个重要子系统 D. 会计电 ...查看


  • 网络安全服务上岗证考试题及答案
  • 网络安全服务上岗证 答题人:****** 考试总分:100.0 考试得分:100.0 1. 判断题 网络安全行为红线是有条件的强制要求,在与业务有冲突时,以满足业务需要为先. 对 考生答案:错 回答正确 错 试题分数:(2.0) 当前得分: ...查看


  • 城市管理学
  • 选择题(共20题,共40分) 1.城市管理学的研究方法有().A系统分析方法B理论联系实际的方法C综合分析方法D定性分析和定量分析相结合的方法参考答案:A,B,C,D:考生答案:A,B,C,D:试题分数:2:考生得分:2 2.与传统的公共管 ...查看


热门内容