Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Beginner Web en 10 Septiembre 2018, 20:08 pm



Título: Ciclos for en listas
Publicado por: Beginner Web en 10 Septiembre 2018, 20:08 pm
Alguien podria explicarme que es lo que hacen estos ciclos en las siguientes listas?

LISTAS SIMPLES
Código
  1. for(i=lista;!=NULL;i=i->sig);
Código
  1. for(i=lista.inicio;i->sig!=NULL;i=i->sig);
  2. i->sig=nuevo;
Código
  1. 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


Título: Re: Ciclos for en listas
Publicado por: MAFUS en 10 Septiembre 2018, 22:54 pm
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.


Título: Re: Ciclos for en listas
Publicado por: Beginner Web en 11 Septiembre 2018, 05:10 am
Y este ultimo?

Código
  1. for(i=lista.inicio;(i->sig)->sig!=NULL;i=i->sig);


Título: Re: Ciclos for en listas
Publicado por: MAFUS en 11 Septiembre 2018, 09:45 am
Es parecido a este
Código
  1. for(i=lista.inicio;(i->sig)->sig!=lista.inicio;i=i->sig);

Si cambias lista.inicio por NULL ¿qué crees que quiere decir?


Título: Re: Ciclos for en listas
Publicado por: Beginner Web en 13 Septiembre 2018, 01:26 am
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:


Título: Re: Ciclos for en listas
Publicado por: jca1 en 13 Septiembre 2018, 02:19 am
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