
Originariamente inviata da
oregon
Beh, e non hai cercato di individuare il problema?
Ci ho provato.. sennò avrei riposto "grazie!" ç_ç
Ecco il codice:
codice:
#include <stdio.h>
#include <stdlib.h>
struct elemento{
int valore;
struct elemento *next;
};
void menu();
struct elemento *insElemento(struct elemento *);
struct elemento *ordLista(struct elemento *);
void printElemento(struct elemento *);
int main(){
struct elemento *Lista=NULL ;
int comando;
do{
menu();
printf("\nComando:\t");
scanf("%d", &comando);
switch(comando){
case 1:{
Lista=insElemento(Lista);
break;
}
case 2:{
Lista=ordLista(Lista);
break;
}
case 3:{
printElemento(Lista);
break;
}
}
}while(true);
return 0;
}
void menu(){
printf("\n--------------------------");
printf("\n1 - Inserisci Elemento\n");
printf("2 - Ordinamento Lista\n");
printf("3 - Visualizza Lista\n");
printf("--------------------------\n");
}
//Inserimento elementi lista
struct elemento *insElemento(struct elemento *list_head){
struct elemento *list_pointer, *list_record;
int i, n=0, val, newval;
printf("Specificare il numero di elementi della lista: ");
scanf("%d", &n);
list_record = (struct elemento *)malloc(sizeof(struct elemento));
printf("\nInserisci il 1 elemento: ");
scanf("%d", &val);
list_record->valore = val;
list_head=list_record;
list_pointer = list_head;
for(i=2; i<=n; i++){
list_record->next = (struct elemento *)malloc(sizeof(struct elemento));
list_record = list_record->next;
printf("\nInserisci il %d elemento: ", i);
scanf("%d", &newval);
list_record->valore = newval;
}
list_record->next = NULL;
list_pointer = list_head;
printElemento(list_pointer);
}
//Ordinamento Lista
struct elemento *ordLista(struct elemento *list_head){
struct elemento *list_pointer;
int flag, temp;
flag = 1;
while(flag == 1){
list_pointer = list_head;
flag =0;
while(list_pointer->next!= NULL){
if(list_pointer->valore > (list_pointer->next)->valore){
temp = list_pointer->valore;
list_pointer->valore = (list_pointer->next)->valore;
(list_pointer->next)->valore = temp;
flag=1;
}
}
}
printElemento(list_head);
return list_head;
}
void printElemento(struct elemento *Lista){
struct elemento *list_pointer = Lista;
printf("\nlista -> ");
while(list_pointer != NULL){
printf("%d", list_pointer->valore);
printf(" -> ");
list_pointer = list_pointer->next;
}
printf(" NULL");
}