lunes, 20 de septiembre de 2010

TDA COLA

Es una estructura de datos donde el primer elemento en entrar es el primero en salir, también denominadas estructuras FIFO (First in, First Out).
Esta estructura de datos se puede definir como una lista enlazada con acceso FIFO a la que sólo se tiene acceso al final de la lista para meter elementos y al principio de esta para sacarlos.
Los operadores asociados a este TDA y las funciones que los implementan  son:
  • Crear: se crea la cola vacía.
  • Encolar (añadir, entrar, push): se añade un elemento a la cola. Se añade al final de esta.
  • Desencolar (sacar, salir, pop): se elimina el elemento frontal de la cola, es decir, el primer elemento que entró.
  • Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primero elemento que entró.

Operadores asociados al TDA Cola.
Operador
Funciones asociadas a GQueue.
Iniciar cola.
GQueue* g_queue_new (void)
Cola vacía.
gboolean g_queue_is_empty (GQueue* queue)
Consultar frente cola.
gpointer g_queue_peek_head (GQueue* queue)
Consultar final cola.
gpointer g_queue_peek_tail (GQueue* queue)
Meter
void g_queue_push_tail (GQueue* queue, gpointer data)
Sacar
gpointer g_queue_pop_head (GQueue* queue)
Vaciar cola.
void g_queue_free (GQueue* queue)

Iniciar cola.
El operador "Iniciar cola" es el encargado de crear una nueva cola y ponerla en estado de cola vacía.

Ejemplo. Creando una nueva cola.

   GQueue* cola;
   cola = g_queue_new ();       

Cola vacía.
Este operador consulta si la cola está vacía. Es necesaria su utilización antes de realizar la operación de "sacar elementos" de la cola.

Ejemplo. Función que comprueba si una cola está vacía.

gboolean cola_vacia (GQueue* cola) {
   return g_queue_is_empty (cola);
}              

Consultar el frente.
Esta operación consulta el contenido del frente de la cola sin sacarlo.


Ejemplo. Función que consulta el frente de la cola.

gpointer consultar_frente (GQueue* cola) {
   return g_queue_peek_head (cola);
}                 

Consultar el final.
Esta operación consulta el contenido del final de la cola sin sacarlo.

Ejemplo. Función que consulta el final de la cola.

gpointer consultar_final (GQueue* cola) {
   return g_queue_peek_tail (cola);
}              

Meter
Este operador introduce elementos al final de la cola.

Ejemplo. Introducir un nuevo elemento en la cola.

GQueue* meter_cola (GQueue* cola, gpointer dato) {
   g_queue_push_tail (cola, dato);

   return cola;
}                

Sacar
El operador "sacar" elimina elementos del frente de la cola.

Ejemplo. Saca un elemento de la cola.

gpointer sacar_cola (GQueue* cola) {
   gpointer dato;

   dato = g_queue_pop_head (cola);

   return dato;
}              

Vaciar cola.
Elimina el contenido de una cola inicializándola a una cola vacía.

Ejemplo. Vacía la cola.

  g_queue_free (cola);                                                                                    

Nota:
GLib: Es una librería que se utiliza en TAD COLA.
GQueue:  ES TAD COLA EN INGLES

No hay comentarios: