Non funziona la funzione ordina! qualcuno può aiutarmi?
codice:
# include <stdlib.h>
# include <stdio.h>
typedef struct nodo *lista;
typedef struct nodo {
int val;
lista next;
}nodo;
lista leggiLista (void);
lista ordina(lista L);
void stampaLista (lista L);
int main (void)
{
lista lis;
lis=leggiLista();
stampaLista(lis);
lis=ordina(lis);
stampaLista(lis);
system("PAUSE");
return 0;
}
lista leggiLista (void)
{
lista N,L=NULL;
int val;
while (1)
{
printf("inserisci valore: ");
scanf("%d",&val);
if (val==0) break;
N=(nodo *)malloc (sizeof(nodo));
if(!N)
{
printf("non c'è spazio");
break;
}
N->val=val;
N->next=L;
L=N;
}
return L;
}
lista ordina (lista L)
{
int valore;
nodo *temp;
temp=L->next;
while(temp!=NULL)
{
if(L->val>temp->val)
{
valore=L->val;
L->val=temp->val;
temp->val=valore;
}
temp=temp->next;
}
return L;
}
void stampaLista (lista L)
{
while(L!=NULL)
{
printf("\n%d\n",L->val);
L=L->next;
}
printf("----------------------------");
}