A continuación el código completo de la pila y las colas implementadas en esta unidad.
# Código 17.2: clasePila.py: Implementación básica de una pila
#! /usr/bin/env python
#encoding: latin1
class Pila:
""" Representa una pila con operaciones de apilar, desapilar y
verificar si ester vacía. """
def __init__(self):
""" Crea una pila vacía. """
# La pila vacía se representa con una lista vacía
self.items=[]
def apilar(self, x):
""" Agrega el elemento x a la pila. """
# Apilar es agregar al final de la lista.
self.items.append(x)
def desapilar(self):
""" Devuelve el elemento tope y lo elimina de la pila.
Si la pila ester vacía levanta una excepción. """
try:
return self.items.pop()
except IndexError:
raise ValueError("La pila ester vacía")
def es_vacia(self):
""" Devuelve True si la lista ester vacía, False si no. """
return self.items == []
# Código 17.3: claseCola.py: Implementación básica de una cola
#! /usr/bin/env python
#encoding: latin1
class Cola:
""" Representa a una cola, con operaciones de encolar y
desencolar. El primero en ser encolado es también el primero
en ser desencolado. """
def __init__(self):
""" Crea una cola vacía. """
# La cola vacía se representa por una lista vacía
self.items=[]
def encolar(self, x):
""" Agrega el elemento x como último de la cola. """
self.items.append(x)
def desencolar(self):
""" Elimina el primer elemento de la cola y devuelve su
valor. Si la cola ester vacía, levanta ValueError. """
try:
return self.items.pop(0)
except:
raise ValueError("La cola ester vacía")
def es_vacia(self):
""" Devuelve True si la cola esta vacía, False si no."""
return self.items == []
# Código 17.4: claseColaEnlazada.py: Implementación de una cola enlazada
#! /usr/bin/env Python
#encoding: latin1
from claseNodo import Nodo
class Cola:
""" Representa a una cola, con operaciones de encolar y
desencolar. El primero en ser encolado es también el primero
en ser desencolado. """
def __init__(self):
""" Crea una cola vacía. """
# En el primer momento, tanto el primero como el último son None
self.primero = None
self.ultimo = None
def encolar(self, x):
""" Agrega el elemento x como último de la cola. """
nuevo = Nodo(x)
# Si ya hay un último, agrega el nuevo y cambia la referencia.
if self.ultimo:
self.ultimo.prox = nuevo
self.ultimo = nuevo
# Si la cola estaba vacía, el primero es también el último.
else:
self.primero = nuevo
self.ultimo = nuevo
def desencolar(self):
""" Elimina el primer elemento de la cola y devuelve su
valor. Si la cola ester vacía, levanta ValueError. """
# Si hay un nodo para desencolar
if self.primero:
valor = self.primero.dato
self.primero = self.primero.prox
# Si después de avanzar no quedó nada, también hay que
# eliminar la referencia del último.
if not self.primero:
self.ultimo = None
return valor
else:
raise ValueError("La cola está vacía")
def es_vacia(self):
""" Devuelve True si la cola esta vacía, False si no."""
return self.primero == None
Copyright (c) 2011-2014 Rosita Wachenchauzer, Margarita Manterola,
Maximiliano Curia, Marcos Medrano, Nicolás Paez.
La copia y redistribución de esta página se permite bajo los términos
de la licencia Creative Commons Atribución - Compartir Obras Derivadas
Igual 3.0 siempre que se conserve esta nota de copyright.