Advertisement
LilChicha174

deque

Oct 28th, 2024
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.15 KB | None | 0 0
  1. # на базе класса и массива, но но операции добавления и удаления в начале будут иметь сложность 𝑂(𝑛), так как они требуют смещения элементов.
  2.  
  3. class Deque:
  4.     def __init__(self):
  5.         self.items = []
  6.  
  7.     def add_front(self, item):
  8.         """Добавить элемент в начало дека."""
  9.         self.items.insert(0, item)  # Добавление в начало требует сдвига элементов
  10.  
  11.     def add_rear(self, item):
  12.         """Добавить элемент в конец дека."""
  13.         self.items.append(item)  # Добавление в конец работает за O(1)
  14.  
  15.     def remove_front(self):
  16.         """Удалить и вернуть элемент из начала дека. Если дек пустой, возвращает None."""
  17.         if not self.is_empty():
  18.             return self.items.pop(0)  # Удаление из начала требует сдвига элементов
  19.         return None
  20.  
  21.     def remove_rear(self):
  22.         """Удалить и вернуть элемент из конца дека. Если дек пустой, возвращает None."""
  23.         if not self.is_empty():
  24.             return self.items.pop()  # Удаление из конца работает за O(1)
  25.         return None
  26.  
  27.     def peek_front(self):
  28.         """Вернуть элемент из начала дека без его удаления. Если дек пустой, возвращает None."""
  29.         if not self.is_empty():
  30.             return self.items[0]
  31.         return None
  32.  
  33.     def peek_rear(self):
  34.         """Вернуть элемент из конца дека без его удаления. Если дек пустой, возвращает None."""
  35.         if not self.is_empty():
  36.             return self.items[-1]
  37.         return None
  38.  
  39.     def is_empty(self):
  40.         """Проверить, пустой ли дек."""
  41.         return len(self.items) == 0
  42.  
  43.     def size(self):
  44.         """Вернуть размер дека."""
  45.         return len(self.items)
  46.  
  47.     def __str__(self):
  48.         """Отобразить элементы дека."""
  49.         return "Deque: " + str(self.items)
  50.  
  51. # на базе класса и deque
  52. from collections import deque
  53.  
  54. class Deque:
  55.     def __init__(self):
  56.         self.items = deque()
  57.  
  58.     def add_front(self, item):
  59.         """Добавить элемент в начало дека."""
  60.         self.items.appendleft(item)
  61.  
  62.     def add_rear(self, item):
  63.         """Добавить элемент в конец дека."""
  64.         self.items.append(item)
  65.  
  66.     def remove_front(self):
  67.         """Удалить и вернуть элемент из начала дека. Если дек пустой, возвращает None."""
  68.         if not self.is_empty():
  69.             return self.items.popleft()
  70.         return None
  71.  
  72.     def remove_rear(self):
  73.         """Удалить и вернуть элемент из конца дека. Если дек пустой, возвращает None."""
  74.         if not self.is_empty():
  75.             return self.items.pop()
  76.         return None
  77.  
  78.     def peek_front(self):
  79.         """Вернуть элемент из начала дека без его удаления. Если дек пустой, возвращает None."""
  80.         if not self.is_empty():
  81.             return self.items[0]
  82.         return None
  83.  
  84.     def peek_rear(self):
  85.         """Вернуть элемент из конца дека без его удаления. Если дек пустой, возвращает None."""
  86.         if not self.is_empty():
  87.             return self.items[-1]
  88.         return None
  89.  
  90.     def is_empty(self):
  91.         """Проверить, пустой ли дек."""
  92.         return len(self.items) == 0
  93.  
  94.     def size(self):
  95.         """Вернуть размер дека."""
  96.         return len(self.items)
  97.  
  98.     def __str__(self):
  99.         """Отобразить элементы дека."""
  100.         return "Deque: " + str(list(self.items))
  101.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement