@@ 181-194 (lines=14) @@ | ||
178 | self.resize(self.M // 2) |
|
179 | return x.value |
|
180 | ||
181 | def put(self, key, value): |
|
182 | i = self.hash(key) |
|
183 | for j in range(self.M): |
|
184 | k = (i + j) % self.M |
|
185 | x = self.id[k] |
|
186 | if x is None: |
|
187 | self.id[k] = Node(key, value) |
|
188 | self.N += 1 |
|
189 | if self.N == self.M // 2: |
|
190 | self.resize(self.M * 2) |
|
191 | break |
|
192 | if util.cmp(x.key, key) == 0: |
|
193 | self.id[k].value = value |
|
194 | break |
|
195 | ||
196 | def resize(self, new_size): |
|
197 | clone = HashedMapWithLinearProbing(new_size) |
@@ 168-180 (lines=13) @@ | ||
165 | self.resize(self.M // 2) |
|
166 | return True |
|
167 | ||
168 | def add(self, key): |
|
169 | i = self.hash(key) |
|
170 | for j in range(self.M): |
|
171 | k = (i + j) % self.M |
|
172 | x = self.id[k] |
|
173 | if x is None: |
|
174 | self.id[k] = Node(key) |
|
175 | self.N += 1 |
|
176 | if self.N == self.M // 2: |
|
177 | self.resize(self.M * 2) |
|
178 | break |
|
179 | if util.cmp(x.key, key) == 0: |
|
180 | break |
|
181 | ||
182 | def resize(self, new_size): |
|
183 | clone = HashedSetWithLinearProbing(new_size) |