当前位置:问答库>考研试题

2018年第二军医大学基础医学部408计算机学科专业基础综合之数据结构考研核心题库

  摘要

一、算法设计题

1. 在一棵以二叉链表表示的二叉树上,试写出按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目的算法。

【答案】算法如下:

层次遍历二叉树,并统计度为1的结点的个数

统计度为1的结点的个数

是以二叉树结点指针为元素的队列

出队,访问结点

度为1的

结点

非空左子女入队

非空右子女入队

返回度为1的结点的个数

2. 已知某哈希表HT 的装填因子小于1,哈希函数H(key)为关键字的第一个字母在字母表中的序号。

(1)处理冲突的方法为线性探测开放地址法。编写一个按第一个字母的顺序输出哈希表中所有关键字的程序。

(2)处理冲突的方法为链地址法。编写一个计算在等概率情况下查找不成功的平均查找长度的算法。注意,此算法中规定不能用公式直接求解计算。

【答案】(1)算法如下:

按关键字第一个字母在字母表中的顺序输出各关键字

哈希地址

1~26

设哈希表初始值为

null

取关键字第一字母在字母表中的序号

(2)算法如下:

求链地址解决冲突的哈希表査找不成功时平均査找长度

记査找不成功的总的次数

按我们约定,査找不成功指到空指针为止

3. 已知无向图采用邻接表存储方式,试写出删除边(i, j) 的算法。

【答案】算法如下:

在用邻接表方式存储的无向图g 中,删除边(i,

j)

删顶点i 的边结点(i, j) , pre 是前驱指针

释放空间

沿链表继续査找

删顶点j 的边结点(j,

i)

释放空间

沿链表继续査找

4. 假设串的存储结构如下所示,编写算法实现串的置换操作。

【答案】算法如下:

//s和t 是用一维数组存储的串,本算法将s 串第i 个字符开始连续j 个字符用t 串置换,操作成功返回1,否则返回0表示失败

//检査参数及置换后的长度的合法性

//若S 串被替换的子串长度小于t 串长度,则S 串部分右移

-

//S串中被替换子串的长度小于t 串的长度

//将t 串复制到S 串的适当位置

//算法结束

//本算法是串的置换操作,将串S 中所有非空串t 相等且不重叠的子串用V 代替

//判断S 是否有和t 相等的子串

//串S 中包含和t 相等的子串

//creat操作是将串常量(此处为空串) 赋值给

temp

//求串t 和s 的长度

//用串v 替换t 形成部

分结果

//将串s 中串后的部分形成新的s 串

//求串s 的长度

//在新s 串中再找串t 的位置

//将串temp 和剩余的串s 连接后再赋值给s

}//if结束

//算法结束

5. 图G 有n 个点,利用从某个源点到其余各点最短路径算法思想,设计一产生G 的最小生成树的算法。

【答案】算法如下:

利用从源点v0到其余各点的最短路径的思想,产生以邻接矩阵表示的图G 的最小生成

数组存放生成树

数组存放顶点是否找到最短路径

初始化, 设顶点信息就是编号

从v0开始,求其最小生成树

是尚未到最小生成树的顶点的集合

循环n -1次