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