La solución que aquí se presenta utiliza una lista
enlazada con doble enlace y circular. La razón por la que se ha escogido
esta estructura de datos es porque es idónea para realizar la selección
de los niños de una manera muy natural. Así, la utilización
de un doble enlace implica que cada bibliotecario puede avanzar en un sentido
inverso al del otro, y además mantener la lista circular simula perfectamente
un círculo de niños. Puesto que los niños se eliminan del
círculo una vez escogidos un array no es lo más adecuado para
efectuar los recorridos.
Respecto a la implementación: la única dificultad
estriba en crear y mantener los enlaces de la lista. El algoritmo que realiza
la selección termina cuando ya no quedan más niños en el
círculo (variable i). En ningún momento es necesario comprobar
si la lista está vacía o no.
Este gráfico ilustra una estructura en la que aparecen
dos niños, y los correspondientes bibliotecarios que hacen recorrido
horario (hor) y antihorario (ant):
Temas relacionados
Listas enlazadas Código Código fuente en C |