Структура данных «Стек», «Очередь» и «Дек».
Стек
Стек — это коллекция, элементы которой получают по принципу «последний вошел, первый вышел»
(Last-In-First-Out или LIFO).
python
class Stack:
def __init__(self):
self.stack = []
def push(self, val):
self.stack.append(val)
def pop(self):
if self.is_empty():
return None
return self.stack.pop()
Очередь
Очередь -это коллекция, элементы которой получают по принципу «первый вошел, первый вышел»
(First-In-First-Out или FIFO).
python
class Queue:
def __init__(self):
self.queue = list()
def enqueue(self, val):
self.queue.append(val)
def dequeue(self):
if self.is_empty():
return None
return self.queue.pop(0)
Двусторонняя очередь
Двусторонняя очередь (Double-ended queue), или дек (Deque), расширяет поведение очереди. В дек можно добавлять или удалять элементы как с начала, так и с конца очереди.
python
class Deque:
def __init__(self):
self.deque = []
def appendLeft(self, val):
self.deque.insert(0, val)
def appendRight(self, val):
self.deque.append(val)
def removeLeft(self):
if self.is_empty():
return None
return self.deque.pop(0)
def removeRight(self):
if self.is_empty():
return None
return self.deque.pop(-1)