Programcion de Cola
Programcion de Cola
Una cola (también llamada fila) es un tipo de dato abstracto, caracterizada por ser una
secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la
operación de extracción pull por el otro. También se le llama estructura FIFO (del inglés First In
First Out), debido a que el primer elemento en entrar será también el primero en salir.
En programación, una cola (queue) es una estructura de datos lineal que se basa en el principio
FIFO (First In, First Out), es decir, el primer elemento en entrar es el primero en salir.
Una cola se comporta como una caja con varios elementos, en donde solo se pueden realizar
dos operaciones: encolar (enqueue) y desencolar (dequeue). Al encolar un elemento, se agrega
al final de la cola, y al desencolar se elimina el elemento que está en el frente de la cola.
Ejemplo de uso:En sistemas operativos, la cola se utiliza para almacenar procesos en espera de
ser ejecutados.
En redes de computadoras, las colas se utilizan para almacenar paquetes en espera de ser
transmitidos.
En sistemas de impresión, las colas se utilizan para almacenar documentos en espera de ser
impresos.
En resumen, una cola es una estructura de datos en la que las operaciones de inserción se
realizan en un extremo (final de la cola) y las operaciones de eliminación se realizan en otro
extremo (frente de la cola). Es una estructura de datos esencial para la programación y es
utilizada en una variedad de problemas y aplicaciones.
Parzibyte's blog
parzibyte
hace 1 año
En este post vamos a implementar una estructura de datos en C de tipo lista ligada.
Se trata de una cola, que a su vez es una lista en donde iremos colocando los elementos
al final de la misma, contrario a una pila en donde cada elemento va a la parte superior.
Hay varias operaciones para una cola en C, pero por ahora te mostraré las 2 básicas: la
de encolar un elemento y la de recorrer la cola.
Recuerda que la cola en C puede ser de cualquier tipo y guardar cualquier cantidad
de datos de cualquier tipo. Al final nosotros le asignamos memoria dinámicamente
con malloc.
El nodo de la lista
Veamos el struct que será el nodo. Este nodo guarda el dato que irá en la cola, y además
un apuntador al siguiente elemento.
Recuerda que este nodo o elemento de la lista puede guardar más datos, incluso otros
nodos, apuntadores y varias cosas.
En mi caso para hacer las cosas simples solo he colocado un elemento de tipo cadena:
Recuerda que tenemos que agregarlo al final de todos los elementos, así que usamos
las recursividad o recursión. Por cierto, en la función recibimos un apuntador a un
struct, y no solo un struct.
Esta es una de las partes más importantes, así que lee con atención. En la línea
3 estamos alojando memoria para nuestro nodo, estamos solicitando RAM al sistema
operativo, ahí es en donde la magia sucede.
Nota: si por alguna razón no hubiera memoria, malloc devolvería NULL, pero no estoy
manejando ese caso.
Luego en la línea 4 asignamos al nodo el valor del nombre que vamos a agregar. Aquí
es necesario el uso de strcpy para asignar la cadena ya que en C las cadenas son algo
difíciles de tratar.
Si fuera un tipo de dato como un entero o algo simple, podríamos hacer por
ejemplo: nuevoNodo->edad = 25;
Hasta este punto solo hemos declarado el nodo, y no lo hemos ligado o relacionado con
otro.
En las siguientes llamadas nos volverán a pasar ese apuntador pero ya tendrá un
elemento, y ahí aplicaremos recursividad.
Recorrer cola
Ya vimos la operación de agregar elementos a la lista en C. Ahora veamos
cómo recorrerla, y podemos hacerlo usando recursividad o un ciclo while.
Aquí es en donde podemos contar los elementos o saber si existe cierto elemento, ya
que en cada paso podemos acceder a todas las propiedades del elemento actual de la
cola.
Poniendo todo junto
Ya te mostré el nodo de la cola y las funciones para agregar o listar. Ahora veamos
cómo declarar el primer elemento e invocar a las funciones. El código completo queda
así:
Eso de los apuntadores es necesario para poder modificar la lista desde otra función; es
algo así como pasar la lista por referencia.