Colas y colas priorizadas
class Cola :
def __init__(self) :
self.longitud = 0
self.cabeza = None
def vacia(self) :
return (self.longitud == 0)
def inserta(self, carga) :
nodo = Nodo(carga)
nodo.siguiente = None
if self.cabeza == None :
# Si la lista está vacı́a nuestro nuevo nodo es el primero
self.cabeza = nodo
else :
# Encuentra el último nodo de la lista
ultimo = self.cabeza
while ultimo.siguiente : ultimo = ultimo.siguiente
# Añada el nuevo nodo
ultimo.siguiente = nodo
self.longitud = self.longitud + 1
def quita(self) :
carga = self.cabeza.carga
self.cabeza = self.cabeza.next
self.longitud = self.longitud - 1
return carga
class ColaMejorada :
def __init__(self) :
self.longitud = 0
self.cabeza = None
self.ultimo = None
def vacia(self) :
return (self.longitud == 0)
def inserta(self, carga) :
nodo = Nodo(carga)
nodo.siguiente = None
if self.longitud == 0 :
# Si la lista está vacı́a nuestro nuevo nodo es el primero
self.cabeza = self.ultimo = nodo
else :
# Encuentra el ultimo nodo de la lista
ultimo = self.ultimo
# Añade nuestro nodo nuevo
ultimo.siguiente = nodo
self.ultimo = nodo
self.longitud = self.longitud + 1
def quita(self) :
carga = self.cabeza.carga
self.cabeza = self.cabeza.siguiente
self.longitud = self.longitud - 1
if self.longitud == 0 : self.ultimo = None
return carga
class ColaPriorizada :
def __init__(self) :
self.elementos = []
def vacia(self) :
return self.elementos == []
def inserta(self, elemento) :
self.elementos.append(elemento)
def quita(self) :
maxi = 0
for i in range(1,len(self.elementos)) :
if self.elementos[i] > self.elementos[maxi] :
maxi = i
elemento = self.elementos[maxi]
self.elementos[maxi:maxi+1] = []
return elemento
class Golfista :
def __init__(self, nombre, puntos) :
self.nombre = nombre
self.puntos = puntos
def __str__(self) :
return "%-15s: %d" % (self.nombre, self.puntos)
def __cmp__(self, otro) :
if self.puntos < otro.puntos : return 1
if self.puntos > otro.puntos : return -1
return 0
Debe estar conectado para enviar un comentario.