2018年郑州大学联合培养单位安阳师范学院408计算机学科专业基础综合之数据结构考研基础五套测试题
● 摘要
一、算法设计题
1. 请用流程图或高级语言表示算法。已知有向图有n 个顶点,请写算法,根据用户输入的数对建立该有向图的邻接表。即接受用户输入的
(以其中之一为0标志结束) ,对于每条这样的
边,申请一个结点,并插入到的单链表中,如此反复,直到将图中所有边处理完毕。
提示:先产生邻接表的n 个头结点(其结点数值域从1到n) 。 【答案】算法如下:
建立有向图的邻接表存储结构
题目要求两顶点之一为0表示结束
2. 设给定关键字输入序列为(100,90,120,60,78,35,42,31,15) 用哈希法散列0-10的地址区间。要求设计一合理的哈希函数;冲突时用链表法解决,写出哈希算法,并构造出哈希表,在等概率查找情况下查找成功的平均查找长度是多少?
【答案】算法如下:
关键字
链指针
用链地址法解决冲突,构造哈希表,哈希函数用
初始化
输入n(本例中n=9)个关键字
第 2 页,共 40 页
输入顶点信息
按题意x 互不相同
4等插入结点链入同义词表
构造的哈希表如图所示:
图构造的哈希表
查找成功时的平均查找长度
。
3. 有n 个记录存储在带头结点的双向链表中,现用双向起泡排序法对其按上升序进行排序,请写出这种排序的算法(注:双向起泡排序即相邻两趟排序向相反方向起泡) 。
【答案】算法如下:
对存储在带头结点的双向链表head 中的元素进行双向起泡排序
设标记
双向链表尾,算法过程中是向上起泡的开始结点
是工作指针,指向当前结点
假定本趟无交换
向下(右) 起泡,一趟有一个最大元素沉底
交换两结点指针,涉及6条链
有交换
先将结点从链表上摘下
将temp 插到p 结点前
第 3 页,共 40 页
无交换,指针后移
准备向上起泡
向上(左) 起泡,一趟有一个最小元素冒
出
交换两结点指针,涉及6条链
有交换
先将temp 结点从链表上摘
下
将temp 插到p 结点后(右
)
无交换,指针前移
准备向下起泡
算法结束
4. 试将下列递归过程改写为非递归过程。
【答案】算法如下:
5. 对于任意的无符号的十进制整数m ,写出将其转换为十六进制整数的算法(转换仅要求能够输出正确的十六进制的整数即可) 。
【答案】算法如下:
第 4 页,共 40 页
相关内容
相关标签