Controllare se un numero di una lista si ripete k volte e inserirlo in una seconda lista.Ragazzi potete aiutarmi con questo codice.Grazie in anticipo
#include <stdio.h>
#include <stdlib.h>
struct elementi{
int x;
struct elementi *next;
};
struct elementi *crea(int x){
struct elementi *e=(struct elementi *)malloc(sizeof(struct elementi));
e->x=x;
e->next=NULL;
return e;
};
struct elementi *coda(struct elementi *top,int x){
if(top==NULL){
struct elementi *e=crea(x);
top=e;
}
else
top->next=coda(top->next,x);
return top;
};
struct elementi *controllo(struct elementi *top,int k,struct elementi *top2){
int c,volte=0;
while(top!=NULL){ //scorro la lista e assegno alla variabile c un valore di quest ultima
c=top->x;
for(;top!=NULL;top=top->next){ // col for controllo quante volte è presente questo valore
if(c==top->x)
volte++;
}
if(volte==k){ // se è presente un numero k di volte allora inserisco quel valore
top2=coda(top2,c); in una seconda lista
volte=0;
}
top=top->next; // assegno a top l'elemento successivo.Il while ricomincia dinuovo
} e cosi facendo i numeri presenti k volte li dovrebbe inserire
return top2; in una nuova lista
}
void stampa(struct elementi *top){
if(top!=NULL){
printf("il valore %d\n",top->x);
stampa(top->next);
}
}
int main()
{
int n;
printf("inserisci la grandezza della lista\n");
scanf("%d",&n);
struct elementi *top=NULL;
int i,m;
for(i=0;i<n;i++){
printf("inserisci il numero\n");
scanf("%d",&m);
top=coda(top,m);
}
printf("numero di ripetizioni?\n");
int k;
scanf("%d",&k);
struct elementi *top2=NULL;
top2=controllo(top,k,top2);
stampa(top2);
return 0;
}