Alguien podria explicarme que es lo que hacen estos ciclos en las siguientes listas?
LISTAS SIMPLES
for(i=lista;!=NULL;i=i->sig);
for(i=lista.inicio;i->sig!=NULL;i=i->sig);
i->sig=nuevo;
for(i=lista.inicio;(i->sig)->sig!=lista.inicio;i=i->sig);
El ultimo es de una lista circular simple con dos punteros al inicio y al final
1. De estar bien construida, i apunta al final de la lista. Pero justo con este código i valdrá NULL.
2. Añade al final de la lista el nuevo dato.
3. i apunta al último elemento, justo antes de que la lista de una vuelta entera.
Y este ultimo?
for(i=lista.inicio;(i->sig)->sig!=NULL;i=i->sig);
Es parecido a este
for(i=lista.inicio;(i->sig)->sig!=lista.inicio;i=i->sig);
Si cambias lista.inicio por NULL ¿qué crees que quiere decir?
Este ultimo ciclo lo que hace es ir comparando desde el segundo elemento en la primera pasada, pero en la segunda pasada lo hace con el tercero o el cuarto elemento? en eso me pierdo un poquillo :huh:
En el segundo reseteas todos los nodos a `nuevo` excepto el inicial. En el tercer codigo te recorre toda la lista hasta el anteultimo valor inclusivemente ya que pregunta si el sig del sig es igual a lista—>inicio. Y el ultimo haria lo mismo y se usaria en una lista no ciclica, llegaria dentro del for hasta el anteultimo, y cuando sale i = anteultimo nodo; lo mismo para ambos casos