开放寻址法

 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 };

猜你喜欢

转载自www.cnblogs.com/yuhong1103/p/12668329.html