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;
}