struct nodo{ int numero; stuct nodo * next; //Es el puntero que apunta al otro nodo // tiene una direccion de memoria hacia el proximo. } Entonces cuando uno hace falloc devuelve la direccion de memoria adonde esta esa nueva struct que hicistes (void *) faloc (sizeof(struct Lista); ese t reserva la memoria y t dice donde creastes. Porlo que ahi que hacer UN APUNTADOR, para ir moviendote entre los nodos. y una cabeza que diga quien es el primero. El apuntador en el main struct nodo * puntero; y uno con el falloc crea las struct que estan sueltas en memoria. Y uno accede a esas struct por medio del apuntador. Y uno tiene que ir guardando esas memorias del falloc en el puntero a siguiente ya que guarda una direccion de memoria. *puntero.next = falloc(sutrct nodo); Se tiene q guardar en la variable la direccion de memoria del struct creado qu eva a ser el siguiente. Y para recorrer harias un while WHILE(puntero.next=!NULL){ puntero = &puntero.next // DIGO QUE EL PUNTERO CAMBIE SU DIRECCION O puntero = puntero.next //DE MEMORIA AL SIGUIENTE puntero. Poniendo //UN & para que pida memoria pero tambien // podria ser solo ay que .next es un puntero. } EN CONCLUSION: NECESITAS GUARDAR LA DIRECCION DEL FALLOC, DONDE PEDISTES MEMORIA PARA POENR UN STRUCT. ESE STRUCT ESTA EN MEMORIA SUELTA. PARA ACCEDER A ESA NECESITAS UN APUNTADOR, PARA QUE APUNTE A ESA STRUCT EN MEMORIA SUELTA. Y EN EN EL STRUCT SE PONE Struct * nodo next; PARA QUE SE GUARDE EN EL NODO UNA DIRECCION PUNTERO HACIA LA SIGUIENTE STRUCTRA