Hash表(链接法)的插入,删除和查找

来源:互联网 发布:java语言的就业前景 编辑:程序博客网 时间:2024/06/05 10:49
#include "stdio.h"#include "stdlib.h"#include "memory.h"struct hashNode{ int data; hashNode *next;};struct hashTable{hashNode *value[10];};//创建hash表(空)hashTable * createHashtable(){hashTable *phashTb1=(hashTable*)malloc(sizeof(hashTable));memset(phashTb1,0,sizeof(hashTable));return phashTb1;}//在hash表中寻找数据hashNode *findInHashTable(hashTable *phashtb1,int data){hashNode *pNode;if(NULL==phashtb1)return NULL;if(NULL==(pNode=phashtb1->value[data%10]))return NULL;while(pNode){if(pNode->data==data)return pNode;else{pNode=pNode->next;}}return NULL;}//在hash表中插入数据bool insertDataInHashTable(hashTable *phashtb1,int data){hashNode *pNode;if(NULL == phashtb1)return false;if(NULL==phashtb1->value[data%10]){pNode=(hashNode*)malloc(sizeof(hashNode));memset(pNode,0,sizeof(hashNode));pNode->data=data;phashtb1->value[data%10]=pNode;return true;}/*if(NULL==findInHashTable(phashtb1,data))return false;*/   pNode=phashtb1->value[data%10];while(pNode->next)pNode=pNode->next;pNode->next=(hashNode*)malloc(sizeof(hashNode));memset(pNode->next,0,sizeof(pNode));pNode->next->data=data;pNode->next->next=NULL;return true;}//从hash表中删除数据bool delete_data_from_hash(hashTable* pHashtb1,int data){hashNode *pNode;if(NULL==pHashtb1||NULL==pHashtb1->value[data%10])return false;if(NULL==findInHashTable(pHashtb1,data))return false;if(data==pHashtb1->value[data%10]->data){pNode=pHashtb1->value[data%10];pHashtb1->value[data%10]=pHashtb1->value[data%10]->next;free(pNode);return true;}pNode=pHashtb1->value[data%10];hashNode *pHead=pNode;pNode=pNode->next;while(pNode->data!=data){pNode=pNode->next;pHead=pHead->next;}pHead->next=pNode->next;pNode->next=NULL;free(pNode);}int main(){hashTable *pHashTbl=createHashtable(); insertDataInHashTable(pHashTbl,1);      insertDataInHashTable(pHashTbl,2);      insertDataInHashTable(pHashTbl,3);      insertDataInHashTable(pHashTbl,4);      insertDataInHashTable(pHashTbl,5);      insertDataInHashTable(pHashTbl,6);      insertDataInHashTable(pHashTbl,7);      insertDataInHashTable(pHashTbl,8);      insertDataInHashTable(pHashTbl,9);      insertDataInHashTable(pHashTbl,10);      insertDataInHashTable(pHashTbl,11);      insertDataInHashTable(pHashTbl,12);      insertDataInHashTable(pHashTbl,13);      insertDataInHashTable(pHashTbl,14);      insertDataInHashTable(pHashTbl,15);      insertDataInHashTable(pHashTbl,16);      insertDataInHashTable(pHashTbl,17);      insertDataInHashTable(pHashTbl,18);  delete_data_from_hash(pHashTbl,3);delete_data_from_hash(pHashTbl,13);return 0;}


0 0
原创粉丝点击