哈希表开放寻址法之线性探测法解决冲突问题
2015-06-09 20:35
197 查看
#include<iostream> #include<cstdlib> using namespace std; class HashTable { private: enum judge{Empty, Value}; struct Node { int data; enum judge j; Node() :j(Empty){} }; Node* TheNodes; int TableSize; public: HashTable(int); int Find(int)const; int Hash(int)const; void Insert(int); void Print()const; }; int main() { HashTable t(20); for (int i = 0; i < 19; i++) { t.Insert(i); } t.Print(); system("pause"); return 0; } HashTable::HashTable(int size) { TableSize = size; TheNodes = new Node[TableSize]; } int HashTable::Hash(int Key)const { return Key % TableSize; } int HashTable::Find(int data)const { int pos; for (int i = 0; i < TableSize; i++) { pos = (Hash(data) + i) % TableSize; //线性探测法 if (TheNodes[pos].j == Empty) break; } return pos; } void HashTable::Insert(int data) { int pos = Find(data); TheNodes[pos].data = data; TheNodes[pos].j = Value; } void HashTable::Print()const { for (int i = 0; i < TableSize; i++) { if (TheNodes[i].j == Value) { cout << TheNodes[i].data << endl; } else { cout << "Empty" << endl; } } }
相关文章推荐
- zz 牛人啊
- openwrt gstreamer实例学习笔记(七. gstreamer 缓冲区(Buffers)和事件(Events))
- 【剑指offer】 面试题50: 树中两个结点的最低公共祖先
- Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got
- Unity3D NGUI如何在UI上显示3D模型
- NGUI: UIToggle
- ROS环境下进行package的简单创建并编译
- Error Code: 1318. Incorrect number of arguments for PROCEDURE company.new_procedure; expected 2, got
- java多线程 ThreadPoolExecutor 策略的坑
- HDU 1875-kruskal
- <学习笔记>Postfix邮件服务器的详细配置
- SpringMVC+MyBatis项目总结(四)
- C++ protected 和 private 在子类继承时的区别
- [MFC]Shapes程序(4):菜单项的加速键、MFC注释宏
- Spring4+Hibernate4+junit4环境搭建
- nginx学习(一)
- 用对话框指针来控制创建关闭和清除子对话框
- Spring学习笔记之Spring事务及事务测试
- POJ 2761 Feed the dogs(树状数组求区间第K大)
- Android中时间日期的使用TimePicker和DatePicker