Estructuras con Punteros
Requisitos de finalización
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.