Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema5 Estructurasdinc3a1micasdatoscolas
Tema5 Estructurasdinc3a1micasdatoscolas
ESTRUCTURAS DINMICAS
DE DATOS (COLAS) EN C
Departamento de Computacin
UNAN-Len
Estructuras Dinmicas de Datos (Colas)
5.1 INTRODUCCIN:
Las colas, al igual que las pilas, resultan de aplicacin habitual en muchos problemas
informticos. Quizs la aplicacin ms comn de las colas es la organizacin de tareas de un
ordenador. En general, los trabajos enviados a un ordenador son "encolados" por ste, para ir
procesando secuencialmente todos los trabajos en el mismo orden en que se reciben. Cuando
el ordenador recibe el encargo de realizar una tarea, sta es almacenada al final de la cola de
trabajos. En el momento que la tarea que estaba realizando el procesador acaba, ste
selecciona la tarea situada al principio de la cola para ser ejecutada a continuacin. Todo
esto suponiendo la ausencia de prioridades en los trabajos. En caso contrario, existir una
cola para cada prioridad.
El smil cotidiano es una cola para comprar, por ejemplo, las entradas del cine. Los nuevos
compradores slo pueden colocarse al final de la cola, y slo el primero de la cola puede
comprar la entrada.
Los tipos que definiremos normalmente para manejar colas sern casi los mismos que para
manejar listas y pilas, tan slo cambiaremos algunos nombres:
2
Estructuras Dinmicas de Datos (Colas)
Es evidente, que una cola es una lista abierta. As que sigue siendo muy importante que
nuestro programa nunca pierda el valor del puntero al primer elemento, igual que pasa con
las listas abiertas. Adems, debido al funcionamiento de las colas, tambin deberemos
mantener un puntero para el ltimo elemento de la cola, que ser el punto donde insertemos
nuevos nodos.
Teniendo en cuenta que las lecturas y escrituras en una cola se hacen siempre en extremos
distintos, lo ms fcil ser insertar nodos por el final, a continuacin del nodo que no tiene
nodo siguiente, y leerlos desde el principio, hay que recordar que leer un nodo implica
eliminarlo de la cola.
De nuevo nos encontramos ante una estructura con muy pocas operaciones disponibles. Las
colas slo permiten aadir y leer elementos:
Las operaciones con colas son muy sencillas, prcticamente no hay casos especiales, salvo
que la cola est vaca.
Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a l,
adems los punteros que definen la cola, primero y ltimo que valdrn NULL:
De nuevo partiremos de un nodo a insertar, con un puntero que apunte a l, y de una cola, en
este caso, al no estar vaca, los punteros primero y ltimo no sern nulos:
Recordemos que leer un elemento de una cola, implica eliminarlo. Ahora tambin existen dos
casos, que la cola tenga un solo elemento o que tenga ms de uno.
4
Estructuras Dinmicas de Datos (Colas)
#include <stdlib.h>
#include <stdio.h>
int main()
{
pNodo primero = NULL, ultimo = NULL;
printf("Aadir(40)\n");
Anadir(&primero, &ultimo, 30);
printf("Aadir(30)\n");
printf("Aadir(90)\n");
printf("Leer: %d\n", Leer(&primero, &ultimo));
printf("Leer: %d\n", Leer(&primero, &ultimo));
system("PAUSE");
return 0;
}
5
Estructuras Dinmicas de Datos (Colas)
/* Borrar el nodo */
free(nodo);
/* Si la cola qued vaca, ultimo debe ser NULL tambin*/
if(!*primero)
*ultimo = NULL;
return v;
}
6
Estructuras Dinmicas de Datos (Colas)
EJERCICIO PROPUESTO:
1. Realice un programa Agenda que almacene en una cola las actividades del da, el
programa deber permitir:
Insertar una actividad.
Borrar una actividad.
Ver todas las actividades del da.
A dems de realizar estas funciones deber crear una funcin para asignar memoria a la
nueva actividad y otra funcin que borre todos los elementos, esta ltima funcin se realiza
para liberar toda la memoria asignada dinmicamente.
3. Escriba una funcin que tenga como argumento dos colas del mismo tipo. Devuelva cierto
si las dos colas son idnticas.