Ciao a tutti! Sto facendo un esercizio che mi chiede di codificare un numero tramite una lista, e i nodi di questa lista devono essere i fattori primi del numero ordinati dal più grande al più piccolo. Ho scritto tutto il programma e l'unico problema è che non mi ritorna il puntatore al primo elemento della lista. Vi posto il codice:
codice:#include <stdio.h> #include <stdlib.h> typedef struct node{ int num; struct node *next; }list; list *ordina(list *); list *scomposizione(int n, list *); void stampa_lista(list *); // Qui è il mio problema list *scomposizione(int n, list *l) { int j; j = 2; do { list *p = l; if(n % j == 0) { p = malloc(sizeof(list)); p->num = j; n = n / j; p = p->next; } else j++; } while (n > 1); return l; } // la funzione ordina svolge il suo compito in modo corretto list *ordina(list *l) { int k; if (l && l->next) { do { list *punt = l; k = 0; while (punt->next) { list *punt1 = punt; punt = punt->next; if ((punt1->num) < (punt->num)) { int tmp = punt1->num; punt1->num = punt->num; punt->num = tmp; k = 1; } } } while (k != 0); } return l; } void stampa_lista(list *l) { while(l != NULL) { printf("%d ", l->num); l = l->next; } printf("\n"); } int main() { int a; list *l1 = NULL; printf("Inserisci numerO:\n"); scanf("%d",&a); scomposizione(a, l1); ordina(l1); stampa_lista(l1); return 0; }

Rispondi quotando
