Purposelessness

Untitled

Dec 22nd, 2022
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.99 KB | None | 0 0
  1. from modules.cases.best_case import *
  2.  
  3.  
  4. class Node:
  5.     def __init__(self, data, next_element=None):
  6.         self.data = data
  7.         self.next_element: Node = next_element
  8.  
  9.  
  10. class Chain:
  11.     def __init__(self, size):
  12.         self.fill_factor = 0.8
  13.         self.table_size = size  # Размер таблицы
  14.         self.bucket_size = 0    # Количество головных узлов
  15.         self.size = 0           # Количество элементов
  16.         self.slots: list[Node] = [None] * self.table_size
  17.         self.put_it = []
  18.         self.search_it = []
  19.         self.del_it = []
  20.  
  21.     def resize(self):
  22.         self.table_size *= 2
  23.         self.size = 0
  24.         self.bucket_size = 0
  25.         self.slots, old_slots = [None] * self.table_size, self.slots
  26.         for i in old_slots:
  27.             while i is not None:
  28.                 self.insert(i.data)
  29.                 i = i.next_element
  30.  
  31.     def insert(self, string):
  32.         if (self.size + 1) > self.fill_factor * self.table_size:
  33.             self.resize()
  34.         key, h = first_hashing(string, self.table_size)
  35.         cell: Node = self.slots[h]
  36.         node = Node(string)
  37.         i = 1
  38.         if cell is None:
  39.             self.size += 1
  40.             self.bucket_size += 1
  41.             self.slots[h] = node
  42.             self.put_it.append(i)
  43.             return
  44.         while cell is not None:
  45.             if cell.data == string:
  46.                 self.put_it.append(i)
  47.                 return
  48.             if cell.next_element is None:
  49.                 break
  50.             cell = cell.next_element
  51.             i += 1
  52.         cell.next_element = node
  53.         self.size += 1
  54.         self.put_it.append(i)
  55.  
  56.     def search(self, string):
  57.         result = 'Not found!'
  58.         key, h = first_hashing(string, self.table_size)
  59.         cell = self.slots[h]
  60.         ind = 1
  61.         if not cell:
  62.             self.search_it.append(ind)
  63.             return result
  64.         while cell:
  65.             if cell.data == string:
  66.                 result = 'yes'
  67.                 break
  68.             cell = cell.next_element
  69.             ind += 1
  70.         self.search_it.append(ind)
  71.         return result
  72.  
  73.     def delete(self, string):
  74.         key, h = first_hashing(string, self.table_size)
  75.         cell: Node = self.slots[h]
  76.         ind = 1
  77.         if cell is None:
  78.             self.del_it.append(ind)
  79.             return
  80.         if cell.data == string:
  81.             # if cell.next_element is not None:
  82.             #     self.bucket_size -= 1
  83.             self.size -= 1
  84.             self.slots[h] = cell.next_element
  85.             self.del_it.append(ind)
  86.             return
  87.         while cell.next_element is not None:
  88.             if cell.next_element.data == string:
  89.                 self.size -= 1
  90.                 cell.next_element = cell.next_element.next_element
  91.                 self.del_it.append(ind)
  92.                 return
  93.             ind += 1
  94.             cell = cell.next_element
  95.         self.del_it.append(ind)
  96.         return
  97.  
Add Comment
Please, Sign In to add comment