Cola circular

Las colas lineales tienen un grave problema, como las extracciones sólo pueden realizarse por un extremo, puede llegar un momento en que el apuntador A sea igual al máximo número de elementos en la cola, siendo que al frente de la misma existan lugares vacíos, y al insertar un nuevo elemento nos mandará un error de overflow (cola llena).

Para solucionar el problema de desperdicio de memoria se implementaron las colas circulares, en las cuales existe un apuntador desde el último elemento al primero de la cola.

La representación gráfica de esta estructura es la siguiente:

Cola circular

La condición de vacío en este tipo de cola es que el apuntador F sea igual a cero.

Las condiciones que debemos tener presentes al trabajar con este tipo de estructura son las siguientes:

  • Over flow, cuando se realice una inserción.
  • Under flow, cuando se requiera de una extracción en la cola.
  • Vacio

Algoritmo de inicialización

F < -- 0
A<-- 0

Algoritmo para insertar

Si (F+1=A) ó (F=1 y A=máximo) entonces
	        mensaje (overflow)
	en caso contrario
	        inicio
		si A=máximo entonces
		        A<--1
		        cola[A]<-- valor
		en caso contrario
		        A <--A+1
		         cola[A]<-- valor
		si F=0 entonces
		         F <-- 1
	         fin

Algoritmo para extraer

Si F=0 entonces
	        mensaje (underflow)
	en caso contrario
	        x <-- cola[F]
	         si F=A entonces
		F <-- 0
		A<-- 0
	         en caso contrario
		si F=máximo entonces
		        F 

Fuente: Apunte de Estructura de Datos del Instituto tecnológico de la Paz