1 //开放寻址法 2 class MyHashMap 3 { 4 public: 5 const static int N = 2000003; 6 int hash_key[N], hash_value[N]; 7 8 MyHashMap() 9 { 10 memset(hash_key, -1, sizeof hash_key); 11 memset(hash_value, -1, sizeof hash_value); 12 } 13 14 int find(int key) 15 { 16 int t = key % N; 17 while (hash_key[t] != key && hash_key[t] != -1) 18 { 19 if ( ++t == N) t = 0; 20 } 21 return t; 22 } 23 24 void put(int key, int value) 25 { 26 int t = find(key); 27 hash_key[t] = key; 28 hash_value[t] = value; 29 } 30 31 int get(int key) 32 { 33 int t = find(key); 34 if (hash_key[t] == -1) return -1; 35 return hash_value[t]; 36 } 37 38 void remove(int key) 39 { 40 int t = find(key); 41 if (hash_key[t] != -1) 42 { 43 hash_key[t] = -1; 44 hash_value[t] = -1; 45 } 46 } 47 };