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

2018年中国刑事警察学院声像资料检验技术系408计算机学科专业基础综合之数据结构考研强化五套模拟题

  摘要

一、算法设计题

1. 设键盘输入n 个英语单词,输入格式为词个数,试编一程序,建立一个单向链表,实现:

(1)如果单词重复出现,则只在链表上保留一个。

(2)除满足(1)的要求外。链表结点还应有一个计数域,记录该单词重复出现的次数,然后输出出现次数最多的前k(k<=n) 个单词。

【答案】定义结点数据类型如下:

//频度域,记单词出现的次数

//maxsize是单词中可能含有的最多字母个数

(1)算法如下:

( )

//建立有n(n>0) 个单词的单向链表,若单词重复出现,则只在链表中保留一个

//申请头结点

//链表初始化

//建立n 个结点的链表

//a是与链表中结点数据域同等长度的字符数组

//p是工作指针,pre 是前驱指针

//单词重复出现,频度增

1

//指针后移

//该单词没出现过,应插入

//将新结点插入到链表最后

//结束for 循环

//结束creat 算法

第 2 页,共 36 页

其中n 表示随后输入英语单

(2)算法如下:

( )

//建立有n 个单词的单向链表,重复单词只在链表中保留一个,最后输出频度最高的k 个单词

//申请头结点

//链表初始化

//建立n 个结点的链表

//a是与链表中结点数据域同等长度的字符数组

//P是工作指针,pre 是前驱指针

//单词重复出现,频度增

1

//先将P 结点从链表上摘下,再按频度域值插入到合适位置

//将P 结点插入到合适位置

//指针后移

//该单词没出现过,应插入到链表最后

//if新结点插入

//结束for 循环建表

r

(输入要输出单词的个数

//输出频度最髙的k 个单词

(”第

//结束算法

2. 编写递归算法,从大到小输出给定二叉排序树中所有关踺字不小于X 的数据元素。要求你的算法的时间复杂度为

【答案】算法如下:

从大到小输出二叉排序树bst 中所有关键字不小于x 的数据元素

第 3 页,共 36 页

) ;

个单词出现次\n”,++i,p ﹣>data ,p ﹣>freg) ;

,其中,2为排序树中所含结点数,m 为输出的关键字个数。

3. 请运用快速排序思想,设计递归算法实现求n(n>1)个不同元素集合中的第f(

【答案】算法如下:

在后半部分继续进行划分

在前半部分继续进行划分

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

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

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

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

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

哈希地址

1~26

设哈希表初始值为

null

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

(2)算法如下:

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

记査找不成功的总的次数

第 4 页,共 36 页

) 小元素。