Python - Pila

En el diccionario de inglés, la palabra pila significa colocar objetos sobre otros. Es la misma forma en que se asigna la memoria en esta estructura de datos. Almacena los elementos de datos de manera similar a como se almacenan un montón de platos uno encima del otro en la cocina. Entonces, la estructura de datos de la pila permite operaciones en un extremo que se puede llamar parte superior de la pila. Podemos agregar elementos o eliminar elementos solo de este extremo de la pila.

En una pila, el elemento inscrito en último lugar en secuencia saldrá primero, ya que solo podemos eliminarlo de la parte superior de la pila. Esta función se conoce como función Último en entrar, primero en salir (LIFO). Las operaciones de agregar y quitar los elementos se conocen comoPUSH y POP. En el siguiente programa lo implementamos como funciones de agregar y quitar. Declaramos una lista vacía y usamos los métodos append () y pop () para agregar y eliminar los elementos de datos.

PUSH en una pila

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

Cuando se ejecuta el código anterior, produce el siguiente resultado:

Tue
Thu

POP de una pila

Como sabemos, podemos eliminar solo el elemento de datos superior de la pila, implementamos un programa de Python que lo hace. La función de eliminación en el siguiente programa devuelve el elemento más superior. Verificamos el elemento superior calculando primero el tamaño de la pila y luego usamos el método pop () incorporado para encontrar el elemento 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())

Cuando se ejecuta el código anterior, produce el siguiente resultado:

Thu
Wed