Allora grazie ai vostri consigli sono riuscito a capire gran parte del programma.. Ma restano due problemi:
1. Nella funzione ordLista quando stampo (manualmente - visto il problema successivo), mi stampa la lista ordinata tranne il primo elemento. ordinato..
Es.
Lista -> 4 -> 8 -> 3 -> 9 -> 2 -> NULL
Me lo ordina e mi stampa..
Lista -> 3 -> 4 -> 8 -> 9 -> NULL
2. Inoltre non riesco a creare la funzione stampa da utilizzare nelle varie funzioni e nel main(). Preticamente non so che parametri passare per rendere performante l'algoritmo![]()
Questo è il codice:
Ah dimenticavo, grazie per le risposte precedenti..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(); 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:{ //PrintLista(); 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; //Stampa della lista printf("\nlista -> "); while(list_pointer != NULL){ printf("%d", list_pointer->valore); printf(" -> "); list_pointer = list_pointer->next; } printf(" NULL"); return list_head; } struct elemento *ordLista(struct elemento *list_head) { struct elemento *list_pointer, *list_record; int flag, temp; list_record = NULL; flag = 1; while (flag == 1) { list_pointer = list_head; flag = 0; while (list_pointer->next != list_record) { 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; } list_pointer = list_pointer->next; } list_record = list_pointer; } //printElemento(); return list_head; } struct printElemento(){ struct elemento *list_pointer printf("\nlista -> "); while(list_pointer != NULL){ printf("%d", list_pointer->valore); printf(" -> "); list_pointer = list_pointer->next; } printf(" NULL"); }![]()

Rispondi quotando