COLAS Curso de Introducción a la Computación
Colas La cola es una colección ordenada de elementos de la que se pueden borrar elementos en un extremo (llamado el frente de la cola) o insertarlos en el otro extremo (llamado el final de la cola). Una cola formada por los elementos A, B y C, en (b) se ha eliminado A y en (c) se han agregado D y E.
Operaciones con colas Las operaciones básicas son: insert(q,x); que inserta un elemento x en la cola y i = remove(q); que elimina un elemento de la cola y lo almacena en i. Las operaciones realizadas en la cola de la figura anterior son: insert(q,A) insert(q,B) insert(q,C) i=remove(q) insert(q,D) insert(q,E)
Representación La cola se representa mediante dos apuntadores; front y rear. Si q es una cola, q.front será el frente y q.rear final. En una cola vacía tanto q.front como q.rear deben ser iguales a nil.
Implementación ligada de colas Una cola se puede implementar utilizando una lista ligada. La cola consistiría de una lista y dos apuntadores q.front y q.rear. La operación x=remove(q) es análoga a x=pop(s), con el apuntador q.front reemplazando a s. Sin embargo cuando se elimina el último elemento de la cola, se debe asignar nil a q.rear ya que solo así se tendrá una cola vacía.
Operación Remove FUNCION REMOVE(Q:COLA) REGRESA QUEUEITEM 1. P Q.FRONT 2. X INFO(P) 3. Q.FRONT NEXT(P) 4. SI Q.FRONT=NIL ENTONCES a. Q.REAR NIL 5. FREENODE(P) 6. REGRESA X
Operación Insert Al insertar un elemento en una cola vacía hay que actualizar el apuntador q.front. SUBRUTINA INSERT(Q:COLA,X:QUEUEITEM) 1. P GETNODE 2. INFO(P) X 3. NEXT(P) NIL 4. SI Q.REAR=NIL ENTONCES a. Q.FRONT P 5. SINO a. NEXT(Q.REAR) P 6. Q.REAR P