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

Rispondi quotando