Colas

Páginas: 5 (1241 palabras) Publicado: 25 de agosto de 2015
SISTEMA DE COLAS
MODELO BASICO

olaSalidas
Sistema de Colas

LLEGADA
S

SALIDAS
Disciplina
COLA
SERVIDOR
De Cola

Colas:
Una cola es un tipo especial de lista
abierta en la que sólo se pueden
insertar nodos en uno de los extremos de
la lista y sólo se pueden eliminar nodos en
el otro. Además, como sucede con las
pilas, las escrituras de datos siempre son
inserciones de nodos, y las lecturassiempre eliminan el nodo leído.

Estructura básica de
un nodo en Lenguaje C
typedef struct _nodo
{ int dato;
struct _nodo *siguiente;
} tipoNodo;

DATO

DATO

DATO

DATO

DATO

Primero
Último

NULL

OPERACIONES BASICAS DE
COLA
De nuevo nos encontramos ante una estructura con
muy pocas operaciones disponibles. Las colas sólo
permiten añadir y leer elementos:
   Añadir: Inserta un elemento al finaldela cola.
  Leer y/o atender: Lee y elimina un elemento del
principio de la cola.

Añadir un elemento a la cola vacía

De nuevo partiremos de un nodo a insertar, con un puntero que apunt
a él, y de una cola, en este caso, al  estar vacía, los punteros primero
y ultimo serán nulos
NODO

DATO

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

Primero

NULL

DATO
Último

Añadir un elemento a la cola NO
vacía

Añadir elemento en una cola no vacía:
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 vacía, los
punteros primero y ultimo no serán nulos:

DATO
Primero

NULL

DATO

NODO

DATOÚltimo

El proceso es muy simple, bastará con que:
1.Hacemos que nodo->siguiente apunte a NULL.
2.Después que ultimo->siguiente apunte a nodo.
3.Y actualizamos ultimo, haciendo que apunte a nodo

DATO

1

2

DATO

NODO

3

Último

DATO

NULL

Leer un elemento en una cola con más de un
elemento:
Usaremos un puntero a un nodo auxiliar:

DATO
Primero

DATO

DATO

NULL
Último

NODO

1.Hacemos que nodoapunte al primer elemento
de la cola, es decir a primero.
2.Asignamos a primero la dirección del segundo
nodo de la pila: primero->siguiente.

3.Guardamos el contenido del nodo para
devolverlo como retorno, recuerda que la
operación de lectura en colas
implican también borrar.
4. Liberamos la memoria asignada al primer
nodo, el que queremos eliminar.

4

DATO

Primero

2

NODO

1

DATO

DATODATO

3

Leer 1 elemento en 1 cola con un solo
elemento

También necesitamos un puntero a un nodo auxiliar:
DATO

DATO

NULL
Último

Nodo auxiliar

Primero

1.Hacemos que nodo apunte al primer elemento de
la pila, es decir a primero.
2.Asignamos NULL a primero, que es la dirección del
segundo nodo teórico de la cola: primero->siguiente.

3.Guardamos el contenido del nodo para
devolverlo comoretorno, recuerda que la
operación de lectura en colas implican también
borrar.
4.Liberamos la memoria asignada al primer nodo,
el que queremos eliminar.
5.Hacemos que ultimo apunte a NULL, ya que la
lectura ha dejado la cola vacía.

4
Primero

1NODO

DATO

NULL

2

Último

5

3

DATO

Funcion Añadir
void Anadir(pNodo *primero, pNodo *ultimo, int v) {

pNodo nuevo;


/* Crear un nodo nuevo */
nuevo = (pNodo)malloc (sizeof (tipoNodo));
nuevo->valor = v;



/* Este será el último nodo, no debe tener siguiente */



nuevo->siguiente = NULL;
/* Si la cola no estaba vacía, añadimos el nuevo a continuación de
ultimo */

if(*ultimo) (*ultimo)->siguiente = nuevo;


/* Ahora, el último elemento de la cola es el nuevo nodo */
*ultimo = nuevo;





/* Si primero es NULL, la cola estaba vacía,ahora primero
apuntará también al nuevo nodo */
if(!*primero) *primero = nuevo;




}

Funcion leer
int Leer(pNodo *primero, pNodo *ultimo) {
pNodo nodo; /* variable auxiliar para manipular nodo */
int v;
/* variable auxiliar para retorno */
/* Nodo apunta al primer elemento de la pila */
nodo = *primero;
if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
/* Asignamos a primero...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • colo colo
  • Colo-Colo
  • colo colo
  • Colo colo
  • Colo-Colo
  • Colas
  • Cola
  • Colas

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS