Python - Стек

В английском словаре слово «стек» означает расположение объектов поверх других. Таким же образом выделяется память в этой структуре данных. Он хранит элементы данных аналогично тому, как несколько тарелок хранятся одна над другой на кухне. Таким образом, структура данных стека позволяет выполнять операции на одном конце, который можно назвать вершиной стека. Мы можем добавлять или удалять элементы только из этого окна стека.

В стеке элемент, вставленный последним в последовательности, выйдет первым, так как мы можем удалить только с вершины стека. Такая функция известна как функция «Последний пришел - первым ушел» (LIFO). Операции добавления и удаления элементов известны какPUSH и POP. В следующей программе мы реализуем его как функции добавления и удаления. Мы объявляем пустой список и используем методы append () и pop () для добавления и удаления элементов данных.

PUSH в стек

class Stack:

    def __init__(self):
        self.stack = []

    def add(self, dataval):
# Use list append method to add element
        if dataval not in self.stack:
            self.stack.append(dataval)
            return True
        else:
            return False
# Use peek to look at the top of the stack

    def peek(self):     
	    return self.stack[-1]

AStack = Stack()
AStack.add("Mon")
AStack.add("Tue")
AStack.peek()
print(AStack.peek())
AStack.add("Wed")
AStack.add("Thu")
print(AStack.peek())

Когда приведенный выше код выполняется, он дает следующий результат:

Tue
Thu

POP из стека

Поскольку мы знаем, что можем удалить только самый верхний элемент данных из стека, мы реализуем программу Python, которая делает это. Функция удаления в следующей программе возвращает самый верхний элемент. мы проверяем верхний элемент, сначала вычисляя размер стека, а затем используем встроенный метод pop (), чтобы определить самый верхний элемент.

class Stack:

    def __init__(self):
        self.stack = []

    def add(self, dataval):
# Use list append method to add element
        if dataval not in self.stack:
            self.stack.append(dataval)
            return True
        else:
            return False
        
# Use list pop method to remove element
    def remove(self):
        if len(self.stack) <= 0:
            return ("No element in the Stack")
        else:
            return self.stack.pop()

AStack = Stack()
AStack.add("Mon")
AStack.add("Tue")
AStack.add("Wed")
AStack.add("Thu")
print(AStack.remove())
print(AStack.remove())

Когда приведенный выше код выполняется, он дает следующий результат:

Thu
Wed