Skip to content

Структура данных «Стек», «Очередь» и «Дек».

Стек

Стек — это коллекция, элементы которой получают по принципу «последний вошел, первый вышел» (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)