Sunteți pe pagina 1din 19

Colas Dinmicas

Algoritmos y estructuras de datos

Ohh! y Qu es una
Cola?
Las estructuras dinmicas son las pilas, listas y colas. Se sabe
que una lista lineal es tambin conocida como lista enlazada.
Una pila es una lista que posee la caracterstica que el ultimo
en entrar es el primero en salir o LIFO (Last In First Out). Una
cola es una lista con la caracterstica que el ultimo en entrar
es el ultimo en salir o LILO (Last in Last Out).
Una cola es una coleccin ordenada de elementos en la que
solo se pueden borrar elementos de un extremo llamado
frente de la cola e insertar elementos en el otro extremo
llamado final de la cola.

Algoritmos y estructuras de datos

Representacin
Grfica
Con colas necesitamos trabajar con dos punteros, el primero posee
una referencia al primer elemento de la cola y el segundo posee una
referencia al final de la misma
inicio

final

Dato1

Dato1

Dato1

Dato1

Dato2

Dato2

Dato2

Dato2

Siguiente

Siguiente

Siguiente

NULL

inicio

Algoritmos y estructuras de datos

final

NULL

Caractersticas de una
Cola
El primer elemento en llegar es el primero

en servir (FIFO Frist In Frist Out).


El ultimo en llegar se agrega al final
El apuntador posee la direccin del
siguiente nodo
El apuntador puede ser null o puede
apuntar al siguiente nodo
Esta estructura se utiliza en :
Simulaciones
Sistemas operativos etc

Algoritmos y estructuras de datos

Operaciones de una
Cola
Insercin de un nuevo elemento en la cola
Supresin de un elemento de la cola
Recorrer los elementos de la cola

Algoritmos y estructuras de datos

Insercin

Algoritmos y estructuras de datos

Insercin de
elementos
Se deben de tomar en cuenta dos casos. Los que son:
1.Cuando la cola esta vaca.
2.Cuando la cola posee al menos un elemento.
Caso 1: Cola vaca
inicio

Caso 2: Cola no vaca

final

inicio

final

NULL

Algoritmos y estructuras de datos

Dato

NULL

Caso 1: Cola vaca


inicio

final

NULL

Algoritmos y estructuras de datos

Caso 1: Cola vaca


inicio

final

NULL

Dato

nuevo

Algoritmos y estructuras de datos

NULL

Caso 2: Cola no
vaca
inicio

final

Dato

NULL

Algoritmos y estructuras de datos

10

Caso 2: Cola no
vaca
inicio

final

Dato

NULL

Algoritmos y estructuras de datos

11

Caso 2: Cola no
vaca
inicio

final
nuevo
Dato

Dato

NULL

NULL

Algoritmos y estructuras de datos

12

Caso 2: Cola no
vaca
inicio

final
nuevo

Dato

Dato

Dato

NULL

Algoritmos y estructuras de datos

NULL

13

Por fin algo de


cdigo
void insertar( elemento **final, elemento **inicio, int dato ){
elemento *nuevo, *begin, *end;
end = *final;
begin = *inicio;
nuevo = nuevoelemento( ); //Se crea el nuevo elemento....
nuevo->dato = dato;
if( end == NULL ){ //Si la cola esta vacia....
nuevo->siguiente = NULL; //Fin de la cola....
end = begin = nuevo;
}
else{ //Si la cola no esta vacia...
nuevo->siguiente = NULL;
end->siguiente = nuevo;
end = nuevo;
}
*final = end;
*inicio = begin;
}

Algoritmos y estructuras de datos

14

Eliminacin

Algoritmos y estructuras de datos

15

Eliminando un elemento
inicio

inicio

final

Dato

Dato

Dato

actual

Algoritmos y estructuras de datos

NULL

16

Aqu vamos de nuevo


void borrar( elemento **final, elemento **inicio ){
elemento *begin, *end, *temp;
begin = *inicio;
end = *final;
if( begin != NULL ){ //Si la pila no esta vacia....
temp = begin;
begin = begin->siguiente;
if( begin == NULL )
end = NULL;
free( temp );
*inicio = begin;
*final = end;
}
else
printf("\nLa cola esta vacia.");
}

Algoritmos y estructuras de datos

17

Recorriendo la cola

Algoritmos y estructuras de datos

18

Aqu vamos de nuevo

void recorrercola( elemento *inicio ){


if( inicio ) {//Si cola no vacia
while( inicio != NULL ){
printf("\nDato: %d", inicio->dato );
printf("\nLlegada en cola: %d", inicio->llegada);
inicio = inicio->siguiente;
}
}
else
printf("\nLa cola esta vacia....");
}

Algoritmos y estructuras de datos

19

S-ar putea să vă placă și