数据结构第九章作业及答案
数据结构第九章作业:
北京工商大学 叶红
1、顺序查找、折半查找和分块查找法对被检索表中元素的原始 关键字要求是什么? 2、在查找和排序算法中,监视哨的作用是什么? 3、哈希表存储的基本思想是什么? 4、哈希函数的构造方法有哪六种?冲突处理的方法有哪几种? 5、试写出在二叉链表存储的二叉排序树中插入值为a的结点算法 二叉排序树的二叉链表定义如下:
typedef struct Node { char data; struct Node *lc,*rc; } Node ;
6、设哈希表HT表长为11,哈希函数 H(key)=key mod 11, 采用线性探测再散列处理冲突,试对下列关键字序列 (19,01,23,14,55,68,11,82,36)构造哈希表HT。
4、答:哈希函数的构造方法有:直接定址法、数字分析法、平方 取中法、折叠法、除留余数法、随机数法。 冲突处理的方法有:开放定址法、链地址法、再哈希法、建立一个 公共溢出区。其中开放定址法根据增量di的取值有三种取法: (1) di=1,2,3…; 称为 线性探测再散列 (2) di=12,-12,22,-22,…,+k2,(k<=m/2)称为 二次探测再散列 (3) di=伪随机数序列,称为 伪随机数探测再散列。
1
数据结构第九章作业答案:
北京工商大学 叶红
1、答:顺序查找可应用于任意关键字序列,折半查找要求原始关 键字有序,分块查找要求原始关键字至少分块有序。 2、答:监视哨的作用是免去查找过程中每次都要检测整个表是否 查找完毕,提高了查找效率。
3、答:哈希表存储的基本思想是用关键字的值决定数据元素的存 储位置。
3
北京工商大学 叶红
6、构造哈希表HT如下(同学应写过
4
5
6
7
8
9
10
55
1 1
1
2
23
1
14
3
68
6
11 82
2 5 1
36
19
4
2
北京工商大学 叶红
5、解: Status InsertBST(Node &T, char a ) {
// 当二叉排序树中不存在关键字等于 a.key 的 数据元素时,插入元素值 //为 a 的结点,并返回 TRUE; 否则,不进行插入并返回FALSE
if (!SearchBST ( T, a.key, NULL, p )) { s =new Node; // 为新结点分配空间 s->data = a; s->lc = s->rc = NULL; if ( !p ) T = s; // 插入 s 为新的根结点 else if ( LT(a.key, p->data.key) ) p->lc = s; // 插入 *s 为 *p 的左孩子 else p->rc = s; // 插入 *s 为 *p 的右孩子 return TRUE; // 插入成功 } else return FALSE; }