7. Listas Circulares.

7.1. Ejemplo de Lista Circular Doblemente enlazada

Consigna:

Cargar de a n instancias a una lista en circular doblemente Enlazada con esta estructura:

struct datos {int telefono; struct datos *pprox; struct datos *pant;};


Veamos a ver 4 casos de manera gráfica para identificar cada situación

Caso 1 : Primer y única Instancia.

Figura 1

Vemos que TODOS los punteros pprox y pant son IGUALES.

Caso 2 : Segunda Instancia.

Vemos que los punteros de A prpox y pant.. apuntan a #B y los de B a A...

Caso 3: Agregamos 3er Instancia

Caso 4: Agregamos 4ta Instancia.

Podemos ver que:
la instancia #B NO cambia si se modifican
la #C cambia SOLO pprox
la #A cambia pant.
la ultima agregada #D,  pprox=#A y pant.


Caso 5: Agregamos la 5ta instancia



Podemos ver que:
la #B NO cambia
la #C NO cambia
la ante última #D cambia ppox lógicamente para apuntar a la nueva instancia.
la última #E agregada pprox=#A y pant.

Caso 6: Agregamos la 6ta instancia



Podemos ver que:
la #B NO cambia
la #C NO cambia
la #D NO cambia
la ante última #E cambia ppox lógicamente para apuntar a la nueva instancia.
la última #F agregada pprox=#A y pant.

Conclusión:

  • En todos los casos cambian la primer y la última instancia.
  • Vemos que la última instancia
  • En los casos donde son 3 instancias o mas cambia la primera, la última y la ante última. Las demás quedan sin cambios.
Vamos a programar esto, teniendo presente que tenemos que diferenciar estos dos casos.