哈希表分离链接发解决冲突
2015-06-09 19:47
381 查看
<pre name="code" class="cpp">#include<iostream> #include<cstdlib> using namespace std; class HashTable { private: struct Node { int data; Node* pnext; Node(int data_) :data(data_), pnext(0){} Node() :pnext(0){} }; Node** TheLists; int TableSize; public: HashTable(int size); int Hash(int); void Insert(int); Node* Find(int); void Print()const; }; int main() { HashTable t(10); for (int i = 0; i < 100; i++) { t.Insert(i); } t.Print(); system("pause"); return 0; } HashTable::HashTable(int size) { TableSize = size; TheLists = new Node*[TableSize]; //创建TableSize个表 for (int i = 0; i < size; i++) { TheLists[i] = new Node; //给每一个表创建表头 } } int HashTable::Hash(int Key) //哈希函数 哈希函数自己选择 { return Key % TableSize; } void HashTable::Insert(int data) { Node* p = Find(data); if (p == NULL) { Node* NewNode = new Node(data); int pos = Hash(data); Node* l = TheLists[pos]; NewNode->pnext = l->pnext; l->pnext = NewNode; } } HashTable::Node* HashTable::Find(int data) { int pos = Hash(data); Node* l = TheLists[pos]; Node* p = l->pnext; while (p != NULL && p->data != data) { p = p->pnext; } return p; } void HashTable::Print()const //显示目前哈希表中的所有元素 { for (int i = 0; i < TableSize; i++) { cout << "TheLists" << i << endl; Node* l = TheLists[i]->pnext; while (l) { cout << l->data << " "; l = l->pnext; } cout << endl; } }
相关文章推荐
- BitSet类
- 20150605字符串及内存管理
- 第十四周项目4 - 处理C++源代码的程序(排查main())
- C++之标准设备IO操作流
- 某个数字进行位运算
- elasticSearch 同义词搜索
- 操作系统中的进程与线程
- 使用Jekyll搭建博客
- 留言板
- Android 性能优化之使用MAT分析内存泄露问题
- SMBIOS介绍(3):实现
- LeetCode 15: 3 Sum
- 20150605字符串及内存管理_练习
- SMBIOS介绍(2):结构表
- cout输出字符型指针地址值的方法
- 应用程序使用同一个TAG的Log方法
- SMBIOS介绍(1):概述
- 学习NodeJS第一天:node.js介绍
- hdu 3339 In Action 背包+flyod
- Read / Write Excel file in Java using Apache POI