Dovrei far trovare la più lunga sequenza di x consecutive,es.
1-2-2-3-2-2-2-2-5 mi dovrebbe dare 4.Nella funzione attuale conta le occorrenze,ma come lo adatto per farlo funzionare?Grazie in anticipo
codice:#include <stdlib.h> #include <stdio.h> typedef struct nod { int data; struct nod *next; } node; node *newnode(void) { return (node *)malloc(sizeof(node)); } node *buildlis() { int x; node *lis, *p, *last; printf("nuovo numero da inserire in lista:\n"); scanf("%d", &x); if (x<=0) lis= NULL; /* caso di lista vuota */ else { last=newnode(); lis = last; last->data = x; last->next = NULL; printf("nuovo numero da inserire in lista:\n"); scanf("%d", &x); while (x>0) { p=newnode(); p->data = x; p->next = NULL; last->next = p; last = p; printf("nuovo numero da inserire in lista:\n"); scanf("%d", &x); } } return(lis); } void printlis(node *lis) { node* tmp; tmp = lis; int somma=0;float media=0;int conteggio=0; printf("\nlista risultato\n"); while (tmp != NULL) { printf(">>>> %d\n", tmp->data) && (somma=somma+tmp->data) && (conteggio=conteggio+1) ; tmp = tmp->next; } printf("Somma %d\n",somma); printf("Conteggio %d \n",conteggio); media=(somma/conteggio); printf("Media %f",media); } void myFree ( node* top ) { node* tmp; tmp = top; while ( top->next != NULL ) { tmp = top->next; free(top); top = tmp; } } int occorrenza(node *lis,int x){ int acc=0;int mem=0; while (lis != NULL) { if (lis->data == x) acc++ ; lis=lis->next; } printf("\nGli elementi = %d sono %d\n",x,acc); return acc; } int main() { node* heada; heada = buildlis ( ); printf ("\n-----STAMPA -----\n"); printlis(heada); occorrenza(heada,3); myFree ( heada ); return 0; }

Rispondi quotando