Come posso stampare una lista con i valori >2 per esempio,qui ne ho fatta una che stampa tutto (printlis )e una i >2 (printgreater).Posso invocare la stampa dei maggiori di 2 con printlis
codice:
#include <stdlib.h>
#include <stdio.h>

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()
{
    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
{
/* inserzione del primo elemento in una lista */
    last=newnode();
    lis = last;
    last->data = x;
    last->next = NULL;
    printf("nuovo numero da inserire in lista:\n");
    scanf("%d", &x);
    while (x>0)
/* Invariante: lis punta alla lista con tutti gli interi finora letti, tranne l'ultimo, e last punta all'ultimo nodo di tale lista */
{
    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);
}
/* Stampa degli elementi di una lista */
    void printlis(node *lis)
{
    printf("lista risultato\n");
    while (lis != NULL)

{
    printf(">>>> %d\n", lis->data);
    lis= lis->next;
}
}
    void printgreater(node *lis, int x)
{
    printf("numeri della lista piu'grandi di %d:\n",x);
    while (lis != NULL)
/* Invariante: stampati tutti i .data maggiori di x dall'inizio della lista fino a lis esclusa */
{
    if (lis->data > x)
{   printf(">>>> %d\n", lis->data);}
    lis= lis->next;
}
}
void myFree ( node* top )
{
    node* tmp;
    tmp = top;

    while ( top->next != NULL ) {
          tmp = top->next;
          free(top);
          top = tmp;
    }
}





main(){
node* head;
int g=2;

    head = buildlis (  );
    printlis(head);
    printgreater(head, g);
    myFree ( head );
    return 0;
}