Problem when viewing this linked list in C

0

I have this code where I add values to the nodes of my linked list but when I view that list it shows me 0. I call the function addNodos () and enter the values that I want but I do not see the data correctly.

Code:

int main()
{
   printf("Ingrese valores numericos hasta meter un 0\n\n");
   agregarNodos();
   visualizarLista();
   return 0;
}

void agregarNodos()
{
   Nodo *nuevo = (Nodo*)malloc(sizeof(nodo));

   do{
      printf("Numero: ");
      scanf("%d",&nuevo->dato);
   }while(nuevo->dato !=0);

   if(principio==NULL)
   {
      principio=nuevo;
      principio->siguiente=NULL;
      final=nuevo;
   }
   else
   {
      final->siguiente=nuevo;
      nuevo->siguiente=NULL;
      final=nuevo;
  }
}

void visualizarLista()
{
   Nodo *actual = (Nodo*)malloc(sizeof(Nodo));
   actual=principio;

   if(principio!=NULL)
   {
       while(actual!=NULL)
       {
          printf("Dato: %d\n",actual->dato);
          actual=actual->siguiente;
       }        
   }
   else
   {
      printf("\n  La lista esta vacia");
   }
}
    
asked by Mario Guiber 13.08.2017 в 15:51
source

1 answer

1

My exercise has finally stayed that way. I leave the code in case someone likes it:

int main()
{
    printf("LISTA ENLAZADA ORDENADA\n\n");
    printf("Introduzca valores para los nodos hasta meter un 0\n\n");
    agregarNodos();
    printf("\n\nDatos introducidos\n\n");
    visualizarLista();
    printf("\n\nDatos introducidos ordenados\n\n");
    ordenar();
    visualizarLista();
    return 0;
}

void agregarNodos()
{
    Nodo *nuevo;    
    int numero = introducirDatos();

    while(numero!=0)
    {
        Nodo *nuevo = (Nodo*)malloc(sizeof(nodo));
        nuevo->dato=numero;
        if(principio==NULL)
        {
            principio=nuevo;
            principio->siguiente=NULL;
            final=nuevo;
        }
        else
        {
            final->siguiente=nuevo;
            nuevo->siguiente=NULL;
            final=nuevo;
        }
        numero=introducirDatos();
    }
}

int introducirDatos()
{
    int x;
    printf("Numero: ");
    scanf("%d",&x);
    return x;
}

void visualizarLista()
{
    Nodo *actual = (Nodo*)malloc(sizeof(Nodo));
    actual=principio;

    if(principio!=NULL)
    {
        while(actual!=NULL)
        {
            printf("Dato: %d\n",actual->dato);
            actual=actual->siguiente;
        }       
    }
    else
    {
        printf("\n  La lista esta vacia");
    }
}

void ordenar()
{
    nodo* pivote=principio;
    int temp; 

    while(pivote!=NULL)
    {
        nodo* aux=pivote;
        while(aux!=NULL)
        {
            if(pivote->dato > aux->dato)
            {
                temp=pivote->dato;
                pivote->dato=aux->dato;
                aux->dato=temp; 
            }
            aux = aux->siguiente;
        }
        pivote=pivote->siguiente;
    }
}
    
answered by 13.08.2017 / 19:03
source