listas simplemente enlazadas

Iniciado por m@o_614, 29 Mayo 2012, 18:49 PM

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

durasno

Vos mismo lo dijiste es casi igual, pero no lo es... Fijate en el if de insertar_final() pregunto si lista es NULL(lista vacia), si es verdadero retorno la estructura creada. (ademas t falta un else :P)

Si vos pasas de esta manera el puntero:
insertar_final(i,lista); // llamada  a la funcion
cuando lista regrese al main no va a hacer ningun cambio, esto es porque el puntero se paso por valor. Podes hacer dos cosas: retornar una estructura como lo hic antes o pasar el puntero por referencia, ¿como? pasando la direccion del puntero
insertar_final(i,&lista); // paso la direccion
......................
void insertar_final(int i,L **lista)
{
    L *ultimo;
    ultimo= nuevo_nodo(i);

    if(*lista==NULL) /* lista vacia */
       *lista=ultimo;
    else {
       L *aux=*lista; /* creo un puntero auxiliar para q me recorra la lista */
       while(aux->sig!=NULL) /* recorro la lista */
           aux=aux->sig; /* cambia al siguiente nodo */
       aux->sig=ultimo; /* el ultimo de la lista apunta a "ultimo" creado aca
    }
}

Fijate que creo un puntero auxiliar para recorrer la lista; esto es porque si vos usas el puntero lista vas a perder la referencia al primer nodo lo cual no es bueno... Cualquier duda segui pregutando

Saludos
Ahorrate una pregunta, lee el man