Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Stampa piste in c

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760

    Stampa piste in c

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

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    e la domanda quale sarebbe??

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    760
    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)?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    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??
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.