Ver Mensaje Individual
  #2 (permalink)  
Antiguo 31/03/2008, 12:36
Avatar de Mephisto
Mephisto
 
Fecha de Ingreso: enero-2006
Ubicación: Mexico DF
Mensajes: 184
Antigüedad: 18 años, 4 meses
Puntos: 3
Re: Listas enlazadas

Cita:
Vayamos por partes:


Código: struct lista
{
char *nombre;
int clave;
struct lista *sig;
};
Una estructura con un apuntador a caracter, un entero, y un apuntador a la misma estructura. Corrijanme si me equivoco.
Es un apuntador a una estructura del mismo tipo, no a ella misma, si se quiere que apunte a si misma eso se haría después aunque no tendría mucho sentido.



Cita:
main()
{

struct lista *L;
struct lista *p;
int i;

L=NULL;
Definimos una varible auxiliar "p", que sera la encargada de crear mas nodos, y creamos la lista vacia con L=NULL;
Recuerda que L y p son apuntadores a un tipo en especifico, aqui ambos son apuntadores a una estructura de tipo lista, p aun no han sido referenciada y L se referencia a nulo.


Cita:
for(i=0;i<4;i++)
{
p=(struct lista *)malloc(sizeof(struct lista));
p->nombre=nombres(i);
p->clave=i;
p->sig=L;
L=p;
}
Genera el nodo, y sí, la primera vez L es NULL por lo que en el primer nodo el apuntador al siguiente nodo es nulo. Esta situacion cambia en la segunda iteración ya que L ya tiene un valor, por lo que se genera un nuevo nodo y el apuntador al siguiente nodo lo mandas a L y despúes lo mandas al inicio de la lista. Con esto L apuntará al primer nodo de la lista.

Lo unico es que el llenado de esta lista es como una pila (LIFO)

Espero poder ponerlo claro. Considerando que ◙ son los nodos creados

Código:
                  Incio del prog
                  p  undefined
                  L NULL
 
                  1a iteraciòn
                   Al crear el nodo tenemos
                   p->◙
                   L ->NULL             

                  Al ejecutar     
                  p->sig=L;

                  p->◙->NULL

                  Al ejecutar     
                  L=p;       
          
                  L->◙->NULL
                  
                  2a iteraciòn
                   Al crear el nodo tenemos
                   p->◙
                   L ->◙->NULL             

                  Al ejecutar     
                  p->sig=L;

                  p->◙->L->◙->NULL

                  Al ejecutar     
                  L=p;       
          
                  L->◙->◙->NULL


                  3a iteraciòn
                   Al crear el nodo tenemos
                   p->◙
                   L ->◙->◙->NULL             

                  Al ejecutar     
                  p->sig=L;

                  p->◙->L->◙->◙->NULL

                  Al ejecutar     
                  L=p;       
          
                  L->◙->◙->◙->NULL
Espero haber sido claro...
__________________
Saludos...

Todos somos sabios, solo que en diferentes disciplinas...