You are on page 1of 5

Practica #6

Estructuras Cola, cola circular


Fecha de elaboracin: 21-Septiembre-2016

Objetivos

1) Comprender el uso de una Estructura Cola y Cola circular


2) Desarrollar la habilidad para implementar la funcin extraer un elemento de una
estructura cola
3) Analizar e implementar una estructura cola circular dinmica.
4) El alumno desarrollar la habilidad para implementar los mtodos insertar,
borrar y listar de una estructura cola circular.

Introduccin

Las estructuras de datos lineales son aquellas en las que los elementos ocupan lugares
sucesivos en la estructura y cada uno de ellos tiene un nico sucesor y un nico
predecesor.

Cola

La cola puede definirse como un contenedor de datos que funciona de acuerdo al


principio FIFO (First Input First Output) porque el primer elemento que entra a la cola
es el primero que sale. En una cola los datos se insertan por un extremo llamado final
o cola (T) y se extraen por el otro extremo llamado frente o cabeza (H). Una buena
analoga de esta estructura de datos es un grupo de personas esperando en la fila
para entrar al cine.
Importante:
Dos variables enteras H (inicio de la fila) y T (final de la fila)
Aplicaciones de las colas.
Ing. Patricia Del Valle Morales

Esta estructura de datos se usa en muchos sistemas operativos, por ejemplo


Unix, para llevar el control de la ejecucin de procesos, cada proceso en el
sistema es almacenado en una lista y esta se va recorriendo, dndole un
pequeo tiempo del microprocesador a cada proceso, durante la fraccin de
segundo de cada proceso este asume que tiene el control total del procesador.
Los clientes que son atendidos en una sucursal bancaria
Los trabajos para impresin en un servidor de impresin
etc.

Operaciones con colas


Bsicas:
1. Insertar(): Agregar un elemento al final de la cola
2. Borrar(): Remover el primer elemento de la cola.
Auxiliares:
3. ValidaEspacio(): Regresa verdadero cuando existe espacio disponible en la cola
(*solo para estructuras estticas**)
4. ValidaVaco(): Regresa verdadero cuando no hay elementos en la cola.

Colas Estticas
Mtodo para insertar datos en la cola
public void Insertar( int dato):
H=-1 T=-1
cola

Insertar(4)

Insertar(10)

cola

cola

4
0

H T
Cdig
o

Insertar(15)

1
0

4
2

H
T
Cdig
o:

Ing. Patricia Del Valle Morales

1
0
1

H
Cdigo:

Insertar(7)

cola
1
5
2

4
3

1
0
1

H
Cdigo:

Insertar(-1)

cola
1
5 7
2

4
4

1
0
1

H
Cdigo:

Insertar(6)

cola
1
5 7
2

ERROR:
desbordamiento

-1

T
Cdigo:

Mtodo para extraer datos de la cola

public int Borrar():


cola
1
5 7

1
0

4
0

int dato = Borrar()

4
0

1
0
1

cola
1
5 7
2

int dato = Borrar()

cola
1 1
0 5 7
0

int dato =
Borrar()

-1

-1

cola
1
5 7
-1

int dato = Borrar()

cola

int dato
=Borrar()

cola

cola

-1

-1

-1
4

4
H

int dato = Borrar()

HT

HT

0 1234
H=-1, T=-1
ERROR:
subdesbordamie
nto

Cola circular

La cola circular es una mejora de la cola simple, debido a que es una estructura de
datos lineal en la cual el siguiente elemento del ltimo es, en realidad, el primero. La
cola circular utiliza de manera ms eficiente la memoria que una cola simple.

Ing. Patricia Del Valle Morales

Colas dinmicas
Es una coleccin de nodos, que se crean en memoria conforme se necesitan.

Desarrollo de la prctica
Ejercicio 1.
En el proyecto colaLSE Implementar la funcin que permite Insertar
un elemento en la estructura cola lineal dinmica.
void Insertar(Lista *cola, int dato)
Consideraciones:
a) Si la lista est vaca deber de inicializar h y t con el valor de la direccin del
nuevo nodo.
b) Si existen elementos en la lista, el nuevo nodo deber insertarse en la lista
ligando el ltimo nodo con el nuevo nodo.
c) Deber actualizar el valor de t

Ejercicio 2.
Implementar la funcin Borrar, sta funcin permite extraer un
elemento de la cola dinmica.
Nodo * Borrar(Lista *cola)
Consideraciones:
d) Si la lista esta vaca mandar un mensaje de error y regresar un valor NULL
e) Si solo existe un elemento en la lista h y t se colocan en NULL y regresa el nodo
que era referenciado por h.
f) Si existe ms de un elemento h pasa al siguiente elemento de la lista y regresa
el nodo que era referenciado por h.
Ejercicio 3.
Escribir un programa que implemente una cola circular dinmica.
Copie el archivo colaLSE.c del ejercicio anterior y sobre el realice los cambios
necesarios.
Consideraciones:
Ing. Patricia Del Valle Morales

a) Modificar el mtodo que crea un nuevo nodo, para que reciba como parmetro la
variable h (que es la referencia al primer elemento de la lista).
b) El campo siguiente del nodo deber de tener el valor de h en lugar de NULL.
c) Modificar es la funcin de Insertar
d) Modificar la funcin Listar
e) Modificar la funcin Borrar
Ejercicio extra para reafirmar conocimiento
Ejercicio 4.
Escriba un programa que implemente el funcionamiento de
una estructura cola esttica (con arreglos) de nmeros enteros.
Ejercicio 5.
Implemente una aplicacin con estructura cola que inserte 10
nmeros enteros y desde la aplicacin principal extraiga estos datos y los
totalice, es decir, realice la suma de los elementos que extrae y cuando la
lista este vaca presente el resultado.
Reflexin del alumno (Esta es una actividad de reflexin para el alumno, donde
deber de realizar una conclusin identificando reas de oportunidad para fortalecer
el conocimiento que le hace falta)
Evaluacin:
Porcent
aje
20%
20%
50%
10%
100%

Proceso
Ejercicio 1
Ejercicio 2
Ejercicio 3
Reflexin
TOTAL

Ing. Patricia Del Valle Morales

Puntuacin
obtenida

TIEMPO
20 MINUTOS
20 MINUTOS
60 MINUTOS
10 MINUTOS
1 HORA 50
MINUTOS

You might also like