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!