Ciclos for en listas

Iniciado por Beginner Web, 10 Septiembre 2018, 20:08 PM

0 Miembros y 1 Visitante están viendo este tema.

Beginner Web

Alguien podria explicarme que es lo que hacen estos ciclos en las siguientes listas?

LISTAS SIMPLES
Código (cpp) [Seleccionar]
for(i=lista;!=NULL;i=i->sig);
Código (cpp) [Seleccionar]
for(i=lista.inicio;i->sig!=NULL;i=i->sig);
i->sig=nuevo;

Código (cpp) [Seleccionar]
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
7w7

MAFUS

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.

Beginner Web

Y este ultimo?

Código (cpp) [Seleccionar]
for(i=lista.inicio;(i->sig)->sig!=NULL;i=i->sig);
7w7

MAFUS

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?

Beginner Web

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:
7w7

jca1

#5
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