链接法hash表
2016-06-26 18:07
225 查看
/* *一个通过链接法解决碰撞问题的Hash表 *主要实现的功能是: *1.读取全域数据并通过hash映射保存到hash表中 *2.查询一个属于全域中的数据在hash表中的位置 * * Author: StoryMonster *Last Change Date: 2016/6/24 */ #include <iostream> #include <stdlib.h> typedef struct HashTable { int value; struct HashTable *next; } HashTable; HashTable *hashTable[10] = {0}; /* *返回value在哈希表中的下标 */ int CalcHashTableIndex(int value) { return value%10; } /* *将关键字value存入hash表中 */ void PutToHashTable(int value) { int index = CalcHashTableIndex(value); HashTable *p = (HashTable *)malloc(sizeof(HashTable)); p->next = NULL; p->value = value; if(hashTable[index] == NULL) { hashTable[index] = p; return ; } p->next = hashTable[index]->next; hashTable[index]->next = p; } void ShowHashTable() { int i=0; for(i=0;i<10;i++) { HashTable *p = hashTable[i]; std::cout << i <<":"; while(p!=NULL) { std::cout << p->value << " "; p = p->next; } std::cout << std::endl; } } int main() { int choice = 0; int value = 0; while(1) { std::cout << "1:input a value 2:scan hash table" << std::endl; std::cout << "your choice:"; std::cin >> choice; switch(choice) { case 1: std::cout << "input value:"; std::cin >> value; PutToHashTable(value); break; case 2: ShowHashTable(); break; } } return 0; }
运行结果
相关文章推荐
- Ruby中的数组和散列表的使用详解
- 详解散列表算法与其相关的C语言实现
- 数据结构-散列表(Hash Table)的C++实现模板
- 目录项缓存与散列表
- 哈希函数的常用构造方法和处理冲突方法
- Introduce to algorithm-----pseudo code to C/C++ code (chapter 11)
- 算法导论 散列表 11.1答案以及乘法散列法
- 深入理解散列表(哈希表)
- 数据结构:散列表
- 散列表性质与实现
- HashTable相关操作实现
- Java HashMap的hash和indexFor函数
- 散列表 hash
- 【数据结构与算法】HashTable相关操作实现(附完整源码)
- 散列表查找
- 哈希表(散列表)原理详解
- HashSet 的一点理解
- 浅谈算法和数据结构:哈希表
- Linux散列表(一)——操作函数
- 查找----基于散列表(线性探测法)