|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jan 2010
Messaggi: 1
|
[C] Problema inserimento ordinato in lista
Salve a tutti, devo sviluppare 2 funzioni, una che legga dall'input un intero e l'altra che lo inserisca in una lista in maniera ordinata crescente, ho sviluppato le due funzioni nel seguente modo:
Codice:
void inserisci_dati(struct elemento *p0) { int num; printf("Inserisci numero intero positivo:\n"); scanf("%d", &num); while(num < 0) { printf("Non puoi inserire numero negativo\n"); printf("Inserisci numero intero positivo:\n"); scanf("%d", &num); } struct elemento *s = NULL; s = (struct elemento *)malloc(sizeof(struct elemento)); s->valore = num; inserisci_ordinatamente(p0, s); } Codice:
void inserisci_ordinatamente(struct elemento *p0, struct elemento *e){ struct elemento *p1, *p2; if(p0 == NULL) { p0 = e; p0->succ = NULL; } else if ( e->valore < p0->valore) { p1 = e; p1->succ = p0; p0 = p1; } else { p1 = p0; while(e->valore > p1->succ->valore && p1->succ != NULL) { p1 = p1->succ; } if (p1->succ != NULL) { p2 = p1->succ; p1->succ = e; p1->succ->succ = p2; } else { p1->succ = e; p1 = p1->succ; p1->succ = NULL; } } } la struttura elemento è definita da un intero e un puntatore, p0 è stato dichiarato nel main come tipo struttura e inizializzato a NULL, la compilazione non dà nessun errore, nell'esecuzione il programma chiede i numeri interi come previsto finchè non si ferma il ciclo, ma poi non vengono stampati a video (c'è un'altra funzione per la stampa a video che non ho incollato poichè è semplicemente un ciclo while)...avete qualche consiglio, suggerimento o qualsiasi altra cosa..accetto tutto!!!! GRAZIE! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:50.