Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. class MyHashTable:
  2. def __init__(self, capacity):
  3. self.capacity = capacity
  4. self.slots = [None] * self.capacity
  5.  
  6. def __str__(self):
  7. return str(self.slots)
  8.  
  9. def __len__(self):
  10. count = 0
  11. for i in self.slots:
  12. if i != None:
  13. count += 1
  14. return count
  15.  
  16. def hash_function(self, key):
  17. # index of the internal array
  18. index = key % self.capacity
  19.  
  20. if key in self.slots: # return index if key already exists
  21. return index
  22.  
  23. try_index = []
  24. for i in range(index, self.capacity):
  25. try_index.append(i)
  26. for i in range(index):
  27. try_index.append(i)
  28.  
  29. for i in try_index:
  30. if self.slots[i] is None:
  31. return i
  32.  
  33. return None
  34.  
  35. def insert(self, key):
  36. # -2 if exist
  37. # full -1
  38. # none if inserted
  39.  
  40. index = self.hash_function(key)
  41. if index is None:
  42. return -1
  43. elif self.slots[index] == key:
  44. return -2
  45. else:
  46. self.slots[index] = key
  47. return index
  48.  
  49. def dump(self):
  50. for key in self.slots:
  51. print(key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement