Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # на базе класса и массива, но но операции добавления и удаления в начале будут иметь сложность 𝑂(𝑛), так как они требуют смещения элементов.
- class Deque:
- def __init__(self):
- self.items = []
- def add_front(self, item):
- """Добавить элемент в начало дека."""
- self.items.insert(0, item) # Добавление в начало требует сдвига элементов
- def add_rear(self, item):
- """Добавить элемент в конец дека."""
- self.items.append(item) # Добавление в конец работает за O(1)
- def remove_front(self):
- """Удалить и вернуть элемент из начала дека. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items.pop(0) # Удаление из начала требует сдвига элементов
- return None
- def remove_rear(self):
- """Удалить и вернуть элемент из конца дека. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items.pop() # Удаление из конца работает за O(1)
- return None
- def peek_front(self):
- """Вернуть элемент из начала дека без его удаления. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items[0]
- return None
- def peek_rear(self):
- """Вернуть элемент из конца дека без его удаления. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items[-1]
- return None
- def is_empty(self):
- """Проверить, пустой ли дек."""
- return len(self.items) == 0
- def size(self):
- """Вернуть размер дека."""
- return len(self.items)
- def __str__(self):
- """Отобразить элементы дека."""
- return "Deque: " + str(self.items)
- # на базе класса и deque
- from collections import deque
- class Deque:
- def __init__(self):
- self.items = deque()
- def add_front(self, item):
- """Добавить элемент в начало дека."""
- self.items.appendleft(item)
- def add_rear(self, item):
- """Добавить элемент в конец дека."""
- self.items.append(item)
- def remove_front(self):
- """Удалить и вернуть элемент из начала дека. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items.popleft()
- return None
- def remove_rear(self):
- """Удалить и вернуть элемент из конца дека. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items.pop()
- return None
- def peek_front(self):
- """Вернуть элемент из начала дека без его удаления. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items[0]
- return None
- def peek_rear(self):
- """Вернуть элемент из конца дека без его удаления. Если дек пустой, возвращает None."""
- if not self.is_empty():
- return self.items[-1]
- return None
- def is_empty(self):
- """Проверить, пустой ли дек."""
- return len(self.items) == 0
- def size(self):
- """Вернуть размер дека."""
- return len(self.items)
- def __str__(self):
- """Отобразить элементы дека."""
- return "Deque: " + str(list(self.items))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement