3.3 Operaciones básicas con colas

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 final de la cola.
  • Leer: Lee y elimina un elemento del principio de la cola.

3.4 Añadir un elemento

Las operaciones con colas son muy sencillas, prácticamente no hay casos especiales, salvo que la cola esté vacía.

Añadir elemento en una cola vacía

Cola vacía
Cola vacía

Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además los punteros que definen la cola, primero y ultimo que valdrán NULL:

Elemento encolado
Elemento encolado

El proceso es muy simple, bastará con que:

  1. Hacer que nodo->siguiente apunte a NULL.
  2. Que el puntero primero apunte a nodo.
  3. Y que el puntero último también apunte a nodo.

Añadir elemento en una cola no vacía

Cola no vacía
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:

Elemento encolado
Elemento encolado

El proceso sigue siendo muy sencillo:

  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.

Añadir elemento en una cola, caso general

Para generalizar el caso anterior, sólo necesitamos añadir una operación:

  1. Hacemos que nodo->siguiente apunte a NULL.
  2. Si ultimo no es NULL, hacemos que ultimo->siguiente apunte a nodo.
  3. Y actualizamos ultimo, haciendo que apunte a nodo.
  4. Si primero es NULL, significa que la cola estaba vacía, así que haremos que primero apunte también a nodo.

3.5 Leer un elemento de una cola, implica eliminarlo

Ahora también existen dos casos, que la cola tenga un solo elemento o que tenga más de uno.

Leer un elemento en una cola con más de un elemento

Usaremos un puntero a un nodo auxiliar:

Cola con más de un elemento
Cola con más de un elemento
  1. Hacemos que nodo apunte 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.
Elemento desencolado
Elemento desencolado

Leer un elemento en una cola con un solo elemento

Cola con un elemento
Cola con un elemento

También necesitamos un puntero a un nodo auxiliar:

  1. Hacemos que nodo apunte al primer elemento de la pila, es decir a primero.
  2. Elemento desencolado
    Elemento desencolado
  3. Asignamos NULL a primero, que es la dirección del segundo nodo teórico de la cola: primero->siguiente.
  4. Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operación de lectura en colas implican también borrar.
  5. Liberamos la memoria asignada al primer nodo, el que queremos eliminar.
  6. Hacemos que ultimo apunte a NULL, ya que la lectura ha dejado la cola vacía.

Leer un elemento en una cola caso general

  1. Hacemos que nodo apunte al primer elemento de la pila, 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.
  5. Si primero es NULL, hacemos que ultimo también apunte a NULL, ya que la lectura ha dejado la cola vacía.