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