#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
typedef struct _NODE{
int data;
struct _NODE *next;
}NODE;
typedef struct _HASH_TABLE{
NODE *value[10];
}HASH_TABLE;
HASH_TABLE *create_hash_table(){
HASH_TABLE *pHashTbl = (HASH_TABLE *)malloc(sizeof(HASH_TABLE));
memset(pHashTbl,0,sizeof(HASH_TABLE));
return pHashTbl;
}
NODE* find_data_in_hash(HASH_TABLE *pHashTbl,int data){
NODE* pNode;
if(NULL == pHashTbl){
return NULL;
}
if(NULL == (pNode = pHashTbl->value[data % 10])){
return NULL;
}
while(pNode){
if(data == pNode->data){
return pNode;
}
pNode = pNode->next;
}
return NULL;
}
int insert_data_in_hash(HASH_TABLE *pHashTbl,int data){
NODE* pNode;
NODE* newNode = (NODE *)malloc(sizeof(NODE));
newNode->data = data;
if(NULL == (pNode = pHashTbl->value[data%10])){
pHashTbl->value[data%10] = newNode;
}else{
while(pNode->next){
pNode = pNode->next;
}
pNode->next = newNode;
}
}
NODE* find_data_in_hash_2(HASH_TABLE *pHashTbl,int data){
NODE* pNode;
if(NULL == pHashTbl){
return NULL;
}
if(NULL != (pNode = pHashTbl->value[data%10])){
while(pNode->next && pNode->data != data){
pNode = pNode->next;
}
if(pNode->data == data){
return pNode;
}else{
return NULL;
}
}
}
int main(){
HASH_TABLE *pHashTbl = create_hash_table();
insert_data_in_hash(pHashTbl,33);
insert_data_in_hash(pHashTbl,34);
insert_data_in_hash(pHashTbl,43);
printf("%d\n",find_data_in_hash(pHashTbl,33)->data);
printf("%d\n",find_data_in_hash(pHashTbl,43)->data);
printf("%d\n",find_data_in_hash(pHashTbl,434));
printf("%d\n",find_data_in_hash_2(pHashTbl,43)->data);
printf("%d\n",find_data_in_hash_2(pHashTbl,34)->data);
exit(0);
}
哈希表
最新推荐文章于 2024-04-19 20:13:15 发布