开地址散列法和拉链法实现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%