开地址散列法和拉链法实现HASH有关操作程序
来源:百度知道 编辑:UC知道 时间:2024/05/17 23:57:05
一、随机生成0~99的若干随机整数,取散列空间为[0~99],散列函数h(k)=k%97,分别按照开地址散列法和拉链法设计并实现HASH插入、查找、删除算法。按照装载因子分别为0.25、0.5、0.75和0.95生成相应HASH表并统计碰撞发生次数。
二、按照一题办法分别生成50、100、1000个随机整数。按照所生成的随机样本顺序生成对应二叉排序树,并实现相应查找和删除算法,统计相应操作要求的比较次数。
**请帮忙写出算法或者是源程序**
struct OPHashElement /*开地址法Hash元素存储结构*/
{
int key; /*关键码*/
/*int value; 属性*/
};
struct LHashElement /*拉链法Hash元素存储结构*/
{
int key; /*关键码*/
/*int value; 属性*/
struct LHashElement *next;
};
struct OPHashElement OHE[MAXNUM]; /*开地址法Hash空间*/
struct LHashElement LHE[MAXNUM]; /*拉链法Hash空间*/
开地址法实现散列的检索算法*/
#include<stdio.h>
#define REGION_LEN 13
typedef int KeyType;
typedef struct
{ KeyType key; /* 字典元素的关键码字段 */
/*DataType value; /* 字典元素的属性字段 */
}DicElement;
typedef struct
{ DicElement element[REGION_LEN];
int m; /* m=REGION_LEN,为基本区域长度 */
} HashDictionary;
#define null -1 /* null为空结点标记 */
#define TRUE 1
#define FALSE 0
int h(KeyType key){
return key%