Estructuras de Datos

Capitulo VI: Colas

Las Colas son Estructuras de Datos lineales en las cuales la característica principal es que el acceso a los elementos se realiza en el orden en el que fueron almacenados.

De acuerdo a la forma de acceso a sus elementos, se las denominca estructuras FIFO (First In, First Out), primero en entrar primero en salir.

A diferencia del tipo de estructuras del capítulo anterior, que tienen un único punto de acceso, las colas presentan dos zonas importantes: El extemo final por donde se ingresan los elementos y la cabecera por donde se extraen y se eliminan los elementos.

Ejemplos de colas:

  • La cola en la parada de autobuses
  • La cola delante de la ventanilla del Banco
  • La cola de trabajos por atender en una impresora

Implementación de Colas con listas enlazadas en python

class Cola:
    top = None
    last = None # ultimo

    def __init__(self, dato=None):
        self.dato = dato
        self.sig = None

    def vacia(self):
        if Cola.top is None:
            return True
        else:
            return False

    def vaciar(self):
        Cola.top = Cola.last = None

    def encolar(self, dato):
        nuevo = Cola(dato)
        if self.vacia():
            Cola.top = Cola.last = nuevo
        else:
            Cola.last.sig = nuevo
            Cola.last = nuevo

    def desencolar(self):
        if self.vacia():
            print("Error, no se puede desencolar")
        else:
            print('desencolando ',Cola.top.dato)
            Cola.top = Cola.top.sig

    def imprimir(self):
        tmp = Cola.top
        while tmp is not None:
            print(tmp.dato)
            tmp = tmp.sig

#if __name__== '__main__':
print('empezamos')
cola = Cola()
cola.encolar(4)
cola.encolar(5)
cola.encolar(3)
cola.imprimir()
cola.desencolar()
cola.imprimir()