首页 > 代码库 > _DataStructure_C_Impl:哈希表

_DataStructure_C_Impl:哈希表

#include<stdlib.h>
#include<stdio.h>
typedef int KeyType;
//元素类型定义
typedef struct{
	KeyType key;	//keyword
	int hi;			//冲突次数
}DataType;
//哈希表类型定义
typedef struct{
	DataType *data;
	int tableSize;	//哈希表的长度
	int curSize;	//表中keyword个数
}HashTable;
//构造一个哈希表,并处理冲突
void CreateHashTable(HashTable *H,int m,int p,int hash[],int n){
	int i,sum,addr,di,k=1;
	(*H).data=http://www.mamicode.com/(DataType *)malloc(m*sizeof(DataType));	//为哈希表分配存储空间"哈希表地址:");
	for(i=0;i<m;i++)
		printf("%-5d",i);
	printf("\n");
	printf("keywordkey:  ");
	for(i=0;i<m;i++)
		printf("%-5d",H.data[i].key);
	printf("\n");
	printf("冲突次数:  ");
	for(i=0;i<m;i++)
		printf("%-5d",H.data[i].hi);
	printf("\n");
}
//求哈希表的平均查找长度
void HashASL(HashTable H,int m){
	float average=0;
	int i;
	for(i=0;i<m;i++)
		average=average+H.data[i].hi;
	average=average/H.curSize;
	printf("平均查找长度ASL=%.2f",average);
	printf("\n"); 
}
void main(){
	int hash[]={23,35,12,56,123,39,342,90};
	int m=11,p=11,n=8,pos;
	KeyType k;
	HashTable H;
	CreateHashTable(&H,m,p,hash,n);
	DisplayHash(H,m);
	k=123;
	pos=SearchHash(H,k);
	printf("keyword%d在哈希表中的位置为:%d\n",k,pos);
	HashASL(H,m);
	system("pause");
}
技术分享

_DataStructure_C_Impl:哈希表