Python - Stack

No dicionário de inglês, a palavra pilha significa organizar objetos sobrepostos. É a mesma maneira que a memória é alocada nesta estrutura de dados. Ele armazena os elementos de dados de maneira semelhante, como um monte de pratos são armazenados um sobre o outro na cozinha. Portanto, a estrutura de dados da pilha permite operações em uma extremidade que pode ser chamada de topo da pilha. Podemos adicionar ou remover elementos apenas a partir desse ponto da pilha.

Em uma pilha, o elemento inserido por último na sequência sairá primeiro, pois podemos remover apenas do topo da pilha. Esse recurso é conhecido como recurso Last in First Out (LIFO). As operações de adicionar e remover os elementos são conhecidas comoPUSH e POP. No programa a seguir, nós o implementamos como funções de adição e remoção. Desenhamos uma lista vazia e usamos os métodos append () e pop () para adicionar e remover os elementos de dados.

PUSH em uma pilha

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())

Quando o código acima é executado, ele produz o seguinte resultado:

Tue
Thu

POP de uma pilha

Como sabemos, podemos remover apenas os primeiros elementos de dados da pilha, implementamos um programa python que faz isso. A função remove no programa a seguir retorna o elemento mais superior. verificamos o elemento superior calculando o tamanho da pilha primeiro e, em seguida, usamos o método pop () embutido para descobrir o elemento mais superior.

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())

Quando o código acima é executado, ele produz o seguinte resultado:

Thu
Wed