fork download
  1. class HashMap:
  2. def __init__(self,m):
  3. self.m=m
  4. self.map=[0]*m
  5. self.frq=[0]*m
  6. self.state=[0]*m
  7. def hash_function(self,k):
  8. return k%self.m
  9. def insert(self,k):
  10. id=self.hash_function(k)
  11. while self.state[id]!=0:
  12. if self.map[id]==k:
  13. self.frq[id]+=1
  14. self.state[id]=1
  15. return
  16. id=(id+1)%self.m
  17. self.map[id]=k
  18. self.state[id]=1
  19. self.frq[id]+=1
  20. def search(self,k):
  21. id=self.hash_function(k)
  22. while self.map[id]!=k:
  23. if self.state[id]==0 or self.state[id]==-1:
  24. return False
  25. id=(id+1)%self.m
  26. if self.map[id]==k and self.state[id]==1:
  27. return True
  28. return False
  29. def delete(self,k):
  30. if self.search(k):
  31. id=self.hash_function(k)
  32. while self.map[id]!=k:
  33. id=(id+1)%self.m
  34. self.frq[id]-=1
  35. self.state[id]=-1
  36. return True
  37. return False
  38. def display(self):
  39. print(f"{'Index':<7}{'Key':<7}{'State':<7}{'Freq':<7}")
  40. print("-"*28)
  41. for i in range(self.m):
  42. print(f"{i:<7}{self.map[i]:<7}{self.state[i]:<7}{self.frq[i]:<7}")
  43.  
  44. hm=HashMap(10)
  45. hm.insert(5)
  46. hm.insert(12)
  47. hm.insert(19)
  48. hm.insert(26)
  49. hm.insert(33)
  50.  
  51. print(hm.delete(19))
  52. print(hm.delete(40))
  53.  
  54. print(hm.search(26))
  55.  
  56. hm.display()
  57.  
Success #stdin #stdout 0.09s 13968KB
stdin
Standard input is empty
stdout
True
False
True
Index  Key    State  Freq   
----------------------------
0      0      0      0      
1      0      0      0      
2      12     1      1      
3      33     1      1      
4      0      0      0      
5      5      1      1      
6      26     1      1      
7      0      0      0      
8      0      0      0      
9      19     -1     0