哈希表开放寻址法之线性探测法解决冲突问题

来源:互联网 发布:mpp编辑软件 编辑:程序博客网 时间:2024/06/11 09:24
#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;}}}

0 0
原创粉丝点击