Está en la página 1de 16

Implementacin de Pilas y Colas en Lenguaje C

Universidad Juan de Castellanos de Tunja

Implementacin de Pilas y Colas en Lenguaje C


 El lenguaje C al igual que otros lenguajes de programacin permite simular el comportamiento o DISCIPLINA EN LA COLA mediante la cual los clientes reciben el servicio. La mayora de los sistemas usan la regla Primero En Entrar Primero En Salir (First In First Out) [PEPS (FIFO)]. Se denomina tambin FIFS (First In First Served).  De la misma manera la Disciplina puede ser modificada y cambiar a un comportamiento de PILA, Ultimo En Entrar Primero En Salir (Last In First Out) [UEPS (LIFO)].

Sistemas de colas: modelo bsico


Sistema de colas

Llegadas

Cola

Disciplina de la cola

Servicio

Salidas

Colas:
 Una cola es un tipo especial de lista abierta en la que slo se pueden insertar nodos en uno de los extremos de la lista y slo se pueden eliminar nodos en el otro. Adems, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo ledo.

Pilas:
 Una pila es un tipo especial de lista abierta en la que slo se pueden insertar y eliminar nodos en uno de los extremos de la lista. Estas operaciones se conocen como "push" y "pop", respectivamente "empujar" y "tirar colocar y retirar. Adems, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo ledo.  El smil del que deriva el nombre de la estructura es una pila de platos. Slo es posible aadir platos en la parte superior de la pila, y slo pueden tomarse del mismo extremo.

Estructura bsica de un nodo en Lenguaje C


 typedef struct _nodo  { int dato;  struct _nodo *siguiente;  } tipoNodo;

Operaciones bsicas con colas:


 De nuevo nos encontramos ante una estructura con muy pocas operaciones disponibles. Las colas slo permiten aadir y leer elementos: Aadir: Inserta un elemento al final de la cola. Leer y/o atender: Lee y elimina un elemento del principio de la cola.

Aadir elemento en una cola 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 ultimo que valdrn NULL:

El proceso es muy simple, bastar con que: 1.nodo->siguiente apunte a NULL. 2.Y que los punteros primero y ultimo apunten a nodo.

Aadir elemento en una cola no vaca: 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 ultimo no sern nulos:

El proceso sigue siendo muy sencillo: 1.Hacemos que nodo->siguiente apunte a NULL. 2.Despus que ultimo->siguiente apunte a nodo. 3.Y actualizamos ultimo, haciendo que apunte a nodo.

Leer un elemento en una cola con ms de un elemento: Usaremos un puntero a un nodo auxiliar:

1.Hacemos que nodo apunte al primer elemento de la cola, es decir a primero. 2.Asignamos a primero la direccin del segundo nodo de la pila: primero->siguiente. 3.Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operacin de lectura en colas implican tambin borrar. Liberamos la memoria asignada al primer nodo, el que queremos eliminar.

Leer un elemento en una cola con un solo elemento: Tambin necesitamos un puntero a un nodo auxiliar:

1.Hacemos que nodo apunte al primer elemento de la pila, es decir a primero. 2.Asignamos NULL a primero, que es la direccin del segundo nodo terico de la 3.cola: primero->siguiente. 4.Guardamos el contenido del nodo para devolverlo como retorno, recuerda que 5.la operacin de lectura en colas implican tambin borrar. 6.Liberamos la memoria asignada al primer nodo, el que queremos eliminar. 7.Hacemos que ultimo apunte a NULL, ya que la lectura ha dejado la cola vaca.

Taller practico:
 Realizar un programa en C que permita simular una empresa de recaudo de servicios pblicos mediante una disciplina de colas.  El programa debe permitir:
Ingresar un nuevo cliente al sistema Atender un usuario Visualizar lo Recaudado

Taller practico:
 Men Principal:

Taller practico:
 Datos para ser ingresados dentro del campo de informacin de cada nodo:

 Visualizar los clientes que se encuentran en la linea de espera:

También podría gustarte