Ho fatto questa lista che deve trovare i multipli tra 2 numeri,secondo voi è formalmente corretta?
P.S.Lanciandola funziona.....
codice:#include <stdlib.h> #include <stdio.h> ------FUNZIONI------ typedef struct nod { int data; struct nod *next; } node; node *newnode(void) { return (node *)malloc(sizeof(node)); } /* Dato un intero n>0, costruisce la lista di nodi da 1 ad n */ node* buildlis_n (int n) { node *p, *lis; lis=NULL; while (n>0) { p=newnode(); p->data=n; p->next=lis; lis=p; n--; } return(lis); } /* Stampa degli elementi di una lista */ void printlis(node *lis,int minimo,int massimo,int mul) { node* tmp; tmp = lis; int conteggio=0; printf("lista risultato\n"); while (tmp != NULL) { if((tmp->data>minimo) && (tmp->data<massimo) && (tmp->data%mul==0) && (conteggio=conteggio+1)) printf(">>>> %d\n", tmp->data); tmp = tmp->next; } printf("Conteggio %d\n", conteggio); } void myFree ( node* top ) { node* tmp; tmp = top; while ( top->next != NULL ) { tmp = top->next; free(top); top = tmp; } } ------MAIN------ int main() { node* head; int n; printf ("Inserire valore: "); scanf ("%d", &n); int min=0;int max=0;int m=0; printf ("Inserire minimo : "); scanf ("%d", &min); printf ("Inserire massimo : "); scanf ("%d", &max); printf ("Inserire multiplo : "); scanf ("%d", &m); head = buildlis_n ( n ); printlis ( head,min,max,m ); myFree ( head ); return 0; }

Rispondi quotando


