[注]:编写程序可选用任一种高语言,算法描述可采用类语言,必要时加上注释
一、 回答下列问题:[20分]
1、 算法的定义和性质
2、 为什么说数组与广义表是线性表的推广?
3、 什么是结构化程序设计?
4、 哈希方法的基本思想
5、 给出一不稳定排序方法名称与实例
二、 构造结果:[24分]
(1) 确定x: x+1语句在下面程序段中的频率,要求写出分析过程。
for i: 1ton do
forj: 1toI do
fork: 1toj dox: x+1
(2) 画出对长度为8的有序表进行折半查找的判定树,并求其在等概率时查找成功的平均
查找长度。
(3) 已知一棵二叉树如右图,给出对这棵二叉树进行前序、中序、后序遍历的结果序列.
(4) 假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为{2,3,5,
7,11,4,13,15},试为这8个字母设计哈夫曼编码.
(5) 在地址空间为0~15 的散列区中,对以下关键字序列构G 造哈希表,关键字序列为
(Jan,Feb,Mar,Apr,May,Jun,JulAug,Sep,Oct,Nov,Dec),H(x) [i/2] ,其中i 为关键字中第一
字母在字母表中的序号。要求用线性探测开放定址法处理冲突,并求出在等概率情况下查找
成功的平均查找长度。
(6) 构造有7个元素组成的线性表一实例,是进行快速排序时比较次数最少的初始排序。
三、 写一算法,完成对这棵二叉树的左右子树的交换,设二叉树以二叉链表作存储结构。
[15分]
四、 编写一非递归算法,对一棵二叉排序树实现中序遍历。[15分]
五、 编写程序,完成下列功能:[15分]
1. 读入整数序列,以整数0 作为序列的结束标志 (0 不作为序列元素),建立一个单链表。
2.实现单链表原地逆转,即单链表中结点指针方向反转,反转操作不使用额外的链表结点,
可使用临时工作单元。
例:输入序列为:1,8,4,3,0
六、 给出有向图G 的邻接表表示。找出其一棵最小生成树。[11分]
[注]:编写程序可选用任一种高语言,算法描述可采用类语言,必要时加上注释
一、 回答下列问题:[20分]
1、 算法的定义和性质
2、 为什么说数组与广义表是线性表的推广?
3、 什么是结构化程序设计?
4、 哈希方法的基本思想
5、 给出一不稳定排序方法名称与实例
二、 构造结果:[24分]
(1) 确定x: x+1语句在下面程序段中的频率,要求写出分析过程。
for i: 1ton do
forj: 1toI do
fork: 1toj dox: x+1
(2) 画出对长度为8的有序表进行折半查找的判定树,并求其在等概率时查找成功的平均
查找长度。
(3) 已知一棵二叉树如右图,给出对这棵二叉树进行前序、中序、后序遍历的结果序列.
(4) 假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为{2,3,5,
7,11,4,13,15},试为这8个字母设计哈夫曼编码.
(5) 在地址空间为0~15 的散列区中,对以下关键字序列构G 造哈希表,关键字序列为
(Jan,Feb,Mar,Apr,May,Jun,JulAug,Sep,Oct,Nov,Dec),H(x) [i/2] ,其中i 为关键字中第一
字母在字母表中的序号。要求用线性探测开放定址法处理冲突,并求出在等概率情况下查找
成功的平均查找长度。
(6) 构造有7个元素组成的线性表一实例,是进行快速排序时比较次数最少的初始排序。
三、 写一算法,完成对这棵二叉树的左右子树的交换,设二叉树以二叉链表作存储结构。
[15分]
四、 编写一非递归算法,对一棵二叉排序树实现中序遍历。[15分]
五、 编写程序,完成下列功能:[15分]
1. 读入整数序列,以整数0 作为序列的结束标志 (0 不作为序列元素),建立一个单链表。
2.实现单链表原地逆转,即单链表中结点指针方向反转,反转操作不使用额外的链表结点,
可使用临时工作单元。
例:输入序列为:1,8,4,3,0
六、 给出有向图G 的邻接表表示。找出其一棵最小生成树。[11分]
[ ] PASCAL C
注 编写程序可选用 或 语言
算法描述采用类语言,应加上必要的注释
所有答案均要求写在答题纸上
一、 回答问题 [15分]