首页 > 代码库 > 查找五:散列表查找
查找五:散列表查找
1 //散列表 2 #include<iostream> 3 using namespace std; 4 #define NULLKEY -32768 5 #define HASHSIZE 12 //定义散列表长度为12 6 7 struct HashTable 8 { 9 int *elem; //数据元素存储基址10 int count; //当前数组元素个数11 };12 13 int m = 0; //散列表长度14 15 //初始化散列表16 bool InitHashTable(HashTable *H)17 {18 m = HASHSIZE;19 H->count = m;20 H->elem = new int[m];21 for(int i=0;i<m;i++)22 H->elem[i] = NULLKEY;23 return true;24 }25 26 //散列函数27 int Hash(int key)28 {29 return key % m;30 }31 32 //插入关键字进散列表33 void InsertHash(HashTable *H, int key)34 {35 int addr = Hash(key);36 while(H->elem[addr] != NULLKEY)37 {38 addr = (addr+1)%m;39 }40 H->elem[addr] = key;41 }42 43 //散列表查找关键字44 bool SearchHash(HashTable H, int key, int *addr)45 {46 *addr = Hash(key);47 while(H.elem[*addr] != key)48 {49 *addr = (*addr+1)%m;50 if(H.elem[*addr]==NULLKEY || *addr == Hash(key))51 return false;52 }53 return true;54 }55 56 int main()57 {58 int arr[HASHSIZE]={12,67,56,16,25,37,22,29,15,47,48,34};59 int i,p,key,result;60 HashTable H;61 62 key=39;63 64 InitHashTable(&H);65 for(i=0;i<m;i++)66 InsertHash(&H,arr[i]);67 68 result=SearchHash(H,key,&p);69 if (result)70 cout<<"查找 "<< key <<" 的地址为:"<<p<<endl;71 else72 cout<<"查找 "<< key <<" 失败。"<<endl;73 74 for(i=0;i<m;i++)75 {76 key=arr[i];77 SearchHash(H,key,&p);78 cout<<"查找 "<< key <<" 的地址为:"<<p<<endl;79 }80 81 return 0;82 }
查找五:散列表查找
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。