Implementación de pilas en Python

Métodos que implementaremos

La implementación de pilas en Python es simple si comprendemos qué métodos debe tener una pila. Los siguientes son los fundamentales:

  • crear: crea una pila vacía.
  • push (apilar): añade un elemento en el top de la pila.
  • pop (desapilar): elimina el elemento del top de la pila.
  • peek (consultar): consultamos (SIN ELIMINAR) el elemento del top de la pila.

Para poder crear una clase más completa añadiremos los siguientes métodos:

  • size: devuelve el número de elementos en la pila.
  • is_empty: devuelve True si la pila está vacía.

Código y explicación de la implementación en Python

class Pila:
    def __init__(self):
        self.elementos = []
        
    def push(self, elemento):
        self.elementos.append(elemento)
        
    def pop(self):
        return self.elementos.pop()
        
    def peek(self):
        return self.elementos[len(self.elementos) - 1]
    
    def size(self):
        return len(self.elementos)
    
    def is_empty(self):
        return size() == 0

Como puedes ver, para implementar una pila en Python, lo que estamos haciendo es usar una lista. Esto se debe a que las listas nos ofrecen dos métodos de gran utilidad: append (añade un elemento al final de la lista) y pop (elimina y retorna el último elemento de la lista). Estas funciones, al ser muy parecidas a push y pop en pilas nos facilitan muchísimo el trabajo.

Representación de la implementación de pilas en Python mediante listas

Veamos como se ha implementado cada método descrito anteiormente:

  • crear: para crear una pila usamos el método __innit__ que crea una lista vacía.
  • push (apilar): en esta función lo único que debemos hacer es usar el método append para añadir al final de la lista, es decir, al top de la pila, el elemento pasado como parámetro.
  • pop (desapilar): eliminamos y retornamos el último elemento de la lista con el método pop para listas.
  • peek (consultar): retornamos el elemento en la última posición de la lista. Para calcular cuál es esta posición, debemos conocer el tamaño de la lista y restarle 1 (recuerda que los índices en una lista empiezan en 0).
  • size: retornamos el tamaño de la lista.
  • is_empty: comprobamos si el método size devuelve 0.

Extra: programa en Python para manipular una pila

Para que puedas jugar con mi implementación de pilas en Python, he creado este pequeño programa que ofrece un menú a partir del cual se puede añadir, eliminar y mirar cuántos elementos hay en una pila. ¡Te animo a que lo ejecutes!

def mostrar_menu():
    print("CREADOR DE PILAS. ¿Que quiere hacer?")
    print("0.Salir")
    print("1.Apilar")
    print("2.Desapilar")
    print("3.Número de elementos")

def pedir_opcion():
    print("Ingrese la opcion (0-1-2-3):")
    opcion = int(input())
    while opcion < 0 or opcion > 3:
        print("Opcion incorrecta. Ingrese una válida:")
        opcion = int(input())
    return opcion
    
def apilar_elemento():
    print("Ingrese el elemento a apilar:")
    elemento = input()
    pila.push(elemento)
    
def desapilar_elemento():
    print("Eliminando el siguiente elemento . . .")
    print(pila.pop())
    
def mostrar_tamaño():
    print("Mostrando tamaño . . .")
    print(pila.size())
    
def creador_pila():
    mostrar_menu()
    opcion = pedir_opcion()
    hacer_accion(opcion)
    print("Presione ENTER para continuar . . .")
    input()
    
def hacer_accion(opcion):
    if opcion == 1:
        apilar_elemento()
    elif opcion == 2:
        desapilar_elemento()
    elif opcion == 3:
        mostrar_tamaño()

pila = Pila()

mostrar_menu()
opcion = pedir_opcion()
hacer_accion(opcion)
print("Presione ENTER para continuar . . .")
input()
while opcion != 0:
    mostrar_menu()
    opcion = pedir_opcion()
    hacer_accion(opcion)
    print("Presione ENTER para continuar . . .")
    input()

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Estoy de acuerdo con que el responsable de la web Aprendiz de Programación use los datos proporcionados en este comentario para poder comunicarse de forma efectiva.

Scroll al inicio