List simply linked in C

0

Hello, I tried to execute this code but when doing it it says that the exe has stopped working .. it does not show me any syntax error, please I would like you to indicate the error.

#include <stdio.h>
#include <stdlib.h>

typedef struct Registro
{
    int valor;
    struct Registro *sig;
}Nodo;

//INICIALIZAR LA LISTA
Nodo *crearLista(Nodo *apuntador)
{
    return apuntador=NULL;
}

Nodo * crearNodo(int numero)
{
    //CREANDO EL NODO
    Nodo *registroNuevo;
    registroNuevo=(Nodo*)malloc(sizeof(Nodo));

    //SINO SE PUDO RESERVAR MEMORIA PARA EL REGISTRO
    if(!registroNuevo)
    {
       printf("No se pudo crear memoria para el registro\n");
       return NULL;
    }
    else
    {
        //SI SE PUDO RESERVAR LA MEMORIA SE INSERTAN LOS DATOS
        registroNuevo->valor=numero;
        registroNuevo->sig=NULL;
    }   
    return registroNuevo;
}


Nodo *insertarEnLista(int numero, Nodo *apuntador)
{
     Nodo *apuntadorAuxiliar ,*registroNuevo;
     registroNuevo=crearNodo(numero);

     //SI SE PUDO CREAR EL NODO QUE SE INSERTE EN LA LISTA
     if(registroNuevo)
     {
          //SI LA LISTA ESTA VACIA  
         if(!apuntador)
               apuntador=registroNuevo;
         else
         {
              //SE USA EL APUNTADOR AUXILIAR PARA MOVERSE ENTRE LOS NODOS
              apuntadorAuxiliar=apuntador;
              while(apuntadorAuxiliar->sig)
                apuntadorAuxiliar=apuntadorAuxiliar->sig;
              apuntadorAuxiliar->sig=registroNuevo;
         }

         return apuntador;
    }
    return NULL;
}

void imprimirlista(Nodo * apuntador)
{
    Nodo *apuntadorAuxiliar;
    apuntadorAuxiliar=apuntador;

    while(apuntadorAuxiliar->sig)
    {
        printf("%d-> ",apuntador->valor);
        apuntadorAuxiliar=apuntadorAuxiliar->sig;
    }
    printf("NULL");
}

int main ()
{
     Nodo *apuntador;
     crearLista(apuntador);
     insertarEnLista(9,apuntador);
     imprimirlista(apuntador);

     return 0;
}
    
asked by Mauricio Brito 25.06.2016 в 10:49
source

1 answer

2

In the main when you initialize the list, you never save the result

 Nodo *apuntador;
 apuntador = crearLista(apuntador); 
 apuntador = insertarEnLista(9, apuntador);
 imprimirlista(apuntador);

Although you could simplify it like this

 Nodo *apuntador;
 apuntador = insertarEnLista(9,NULL);
 imprimirlista(apuntador);
    
answered by 25.06.2016 / 13:47
source