PDA

Visualizza la versione completa : Stampa piste in c


gabama
30-01-2009, 18:38
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

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

Stoicenko
30-01-2009, 18:43
e la domanda quale sarebbe??

gabama
30-01-2009, 18:59
ho 2 funzioni ,una che stampa >2 e una tutto .Posso con quella che stampa tutto invocare la stampa degli elementi solo >2 (invocando quindi l' altra funzione)?

oregon
30-01-2009, 19:01
Originariamente inviato da gabama
ho 2 funzioni ,una che stampa >2 e una tutto .Posso con quella che stampa tutto invocare la stampa degli elementi solo >2 (invocando quindi l' altra funzione)?

Eh??

Loading