Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cola
Una cola es un TDA en la cual los nuevos elementos se agregan por el extremo final y los ya existentes se eliminan por el extremo inicial. De acuerdo a lo expuesto anteriormente podemos afirmar que los elementos se eliminan en el mismo orden en el cual se insertaron, es decir, el primer elemento que se agrega en la cola ser el primero en ser eliminado. Debido a esta caracterstica las Colas son tambin conocidas como estructuras de tipo FIFO (First Input, First Output. El primero que entra es el primero en salir).
El Tipo de Dato Abstracto Cola se define formalmente como un una coleccin de elementos, que tiene dos extremos, en la cual se agregan elementos por el final y se eliminan por el inicio.
Ejemplo de Colas
Cola de Impresin
Colas de Carros
Existen otras operaciones que se pueden efectuar en la cola, que no son fundamentales por esta razn se les llama operaciones auxiliares.
1. Verificar si la cola esta vaca (Empty) 2. Verificar si la cola esta llena (Full) 3. Ver la cantidad de elementos actuales en la cola. (Size)
Al especificar este tipo de estructura de datos por medio de vectores, es necesario definir el tamao mximo de la cola (lo cual limita el nmero de elementos mximos que se pueden almacenar en la cola a un valor fijo). Tambin debemos tener dos variables auxiliares que nos indique el primero y el ltimo elemento de la cola
quita()
verFrente() : Tipo Elem colaVacia(): Booleano colaLlena(): Booleano elementos(): Entero
Suponga que se tiene una cola que puede almacenar un mximo de 5 elementos, la cual se encuentra vaca, y se desea insertar un elemento con clave 3. el Proceso se observa a continuacin.
TDA Cola MAX = 5
4
Como es el primer Se Estado mueve de el la Fin Cola a Se guarda el elemento elemento de la cola el antes la siguiente de insertar en esa posicin Frente y el Fin son posicin el Elemento disponible iguales
Frente = 0 -1 Fin = 0 -1
Fin Frente
25 3
Fin 0 Frente
16 25 3
Frente
12
16 25 3
Frente
12
16 25 3
Frente
La Cola esta llena, si se intentara insertar un nuevo elemento, se producir un error conocido como Desbordamiento (overflow), debido a que no se puede expandir ni contraer el tamao de la cola, y de poder hacerlo posiblemente consumira mucho tiempo.
TDA Cola MAX = 5 Estado de la Cola Frente = 0 Fin = 4
Fin
4
12
16 25 3
Frente
12
16 25 3
Frente 0
12
16 25 3
Frente 1
0
12
16 25 3
Frente 2
1
MAX = 5 Se Estado mueve deel laFrente Cola antes a la de siguiente eliminar elposicin Elemento Frente = 4 3 Fin = 4
Frente
12
16 25 3
MAX = 5
Frente
Como Antes de Se Estado mueve deel laFrente Cola Eliminar Fin y Frente antes a la de siguiente eliminar son iguales la cola elposicin Elemento queda vaca
Frente = 5 4 -1 Fin = 4 -1
12
16 25 3
Suponga que deseamos eliminar otro elemento de la cola, Como Frente es -1 se sale del mtodo sin efectuar cambios.
TDA Cola MAX = 5 Frente = -1 Estado de la Cola Fin = -1
4
12
16 25 3
Fin Frente
FUNCION COLAVACIA() : BOOLEANO SI FRENTE == -1 ENTONCES RETORNAR VERDADERO SINO RETORNAR FALSO FIN SI FIN FUNCION
FUNCION COLALLENA() : BOOLEANO SI FIN+1 == MAX ENTONCES RETORNAR VERDADERO SINO RETORNAR FALSO FIN SI FIN FUNCION
FUNCION VERFRENTE() : Tipo Elem SI FRENTE>=0 ENTONCES RETORNAR Datos[FRENTE] FIN SI FIN FUNCION
FUNCION PONE(Elem : Tipo Elem) : BOOLEANO SI (COLALLENA()) ENTONCES RETORNAR FALSO SINO FIN = FIN +1, Dato[FIN] = Elem SI(FRENTE == -1) ENTONCES FRENTE = 0 FIN SI RETORNAR VERDADERO FIN SI FIN FUNCION
FUNCION QUITA(): BOOLEANO SI (COLAVACIA()) ENTONCES RETORNAR FALSO SINO FRENTE = FRENTE+1 SI (FRENTE>FIN) ENTONCES FRENTE = FIN = -1 FIN SI RETORNAR VERDADERO FIN SI FIN FUNCION
Suponga que la Cola se encuentra en el siguiente estado, y deseamos insertar el elemento con Clave 5
TDA Cola MAX = 5
Fin
4
Como Fin+1 es igual aEstado MAX la cola esta de la Cola llena y no se pueden antes de Insertar insertar ms datos
Frente = 2 Fin = 4
12
16 25 3
Frente 2
1
Como se puede observar en la diapositiva anterior a pesar que aun existen elementos disponibles al inicio del vector, es imposible seguir agregando elemento porque ya el Fin llego al Final del vector, a este tipo de colas se les llama Cola con frente fijo, ya que estn limitadas a recorrer el vector en un solo sentido. Colas Circulares Para solucionar la limitacin de la cola con frente fijo se crean las colas circulares o de frente variable, esto permite reutilizar los espacios que quedan disponibles al inicio del vector, despus de eliminar elementos de la cola. Una cola circular constituye una estructura de datos lineal en la cual el siguiente elemento del ltimo en realidad es el primero. De esta forma se utiliza de manera ms eficiente la memoria del computador.
Como la Cola no esta Estado la Cola llena y Fin de +1 igual Se insertar el es valor en antes de insertar a MAX se lleva Fin Fin a la posicin el Elemento la posicin 0
Frente = 2 Fin = 0 4
12
16 25 3 5
Frente 2
1
12
16 25 23 5
Frente 2
1
En este estado, si se intenta agregar otro elemento no se podra ya que Fin+1 es igual al Frente, lo que significa que la Cola esta llena
Fin
Ahora deseamos eliminar un elemento de una cola que se encuentra en el siguiente estado
TDA Cola MAX = 5
Frente 4
3
Se mueve el Frente a la Estado de la Cola siguiente posicin, pero antes de insertar como Frente+1 es MAX el Elemento se mueve al inicio del vector
Frente = 0 4 Fin = 0
12
16 25 5
Fin
FUNCION COLAVACIA() : BOOLEANO SI FRENTE == -1 ENTONCES RETORNAR VERDADERO SINO RETORNAR FALSO FIN SI FIN FUNCION
FUNCION COLALLENA() : BOOLEANO SI ELEMENTOS()==MAX ENTONCES RETORNAR VERDADERO SINO RETORNAR FALSO FIN SI FIN FUNCION
FUNCION VERFRENTE() : Tipo Elem SI FRENTE>=0 ENTONCES RETORNAR Datos[FRENTE] FIN SI FIN FUNCION
FUNCION ELEMENTOS() : ENTERO SI (FIN>=FRENTE) ENTONCES RETORNAR FIN-FRENTE+1 SINO RETORNAR FIN+MAX-FRENTE+1 FIN SI FIN FUNCION
FUNCION PONE(Elem : Tipo Elem) : BOOLEANO SI (COLALLENA()) ENTONCES RETORNAR FALSO SINO FIN = FIN +1 SI FIN>=MAX ENTONCES FIN = 0 FIN SI SI(FRENTE == -1) ENTONCES FRENTE = 0 FIN SI Dato[FIN] = Elem RETORNAR VERDADERO FIN SI FIN FUNCION
FUNCION QUITA(): BOOLEANO SI (COLAVACIA()) ENTONCES RETORNAR FALSO SINO FRENTE = FRENTE +1 SI (FRENTE-1==FIN) ENTONCES FRENTE = FIN = -1 FIN SI SI FRENTE>=MAX ENTONCES FRENTE = 0 FIN SI RETORNAR VERDADERO FIN SI FIN FUNCION
Doble cola
Es una generalizacin de una estructura de datos tipo cola. Los elementos se pueden insertar o eliminar por cualquiera de los dos extremos.
Doble Cola
Frente 1 2
Final 3 Max
Frente 1 2
Final 3 Max
1 2 3 Max
Final