Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Creare un menu che dia la scelta di inserire dati (nome , comgnome , CF ) tramite liste linerari , ovviamente con memoria dinamica
- // Dia anche la possibilità di visualizzare tutti i dati inseriti
- #include <stdio.h>
- #include <malloc.h>
- #define ERRORE printf ("\nSi è inserito un dato errato , ERRORE ... \nInserire nuovamente")
- #define NEWLINE printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n")
- #define PAUSA scanf ("%c" , &pausa)
- struct persona {
- char nome [30];
- char cognome [30];
- char cf [17];
- struct persona *link;
- };
- // dichiarazioni delle funzioni in uso nel programma
- struct persona *creaLista ( void );
- struct persona *creaLista2 ( struct persona * );
- void visualizza ( struct persona * );
- int main ()
- { // inizio della funzione main principale
- int scelta;
- char pausa;
- int flag = 0 ; // flag = 0 se ancora non sono stati creati elementi , flag > 0 se gia esiste il puntatore alla testa
- struct persona *puntLista; // puntatore alla testa
- struct persona *puntSeguenti; // puntatore degli elementi seguenti
- do
- { // inizio del ciclo do while che fsa riprodurre il menu
- printf ("1)Inserisci dati persona");
- printf ("\n2)Visualizza dati persona");
- printf ("\n\n\n0)Fine");
- scanf ("%d" , &scelta);
- switch ( scelta )
- {
- case 1 : if ( flag == 0 ) { // il flag concide con 0 se stiamo inserendo il primo elemento
- puntLista = creaLista ();
- flag++;
- puntSeguenti = puntLista; } // assegnamo il puntatore alla testa al puntSeguenti per non perdere la testa
- else if ( flag == 1 )
- puntSeguenti = creaLista2 ( puntSeguenti);
- break;
- case 2 : visualizza ( puntLista );
- PAUSA;
- PAUSA;
- break;
- case 0 : NEWLINE;
- printf ("Grazie per aver usato questo programma.\nArrivederci !!! ");
- scanf ("%c" , &pausa);
- scanf ("%c" , &pausa);
- break;
- default : NEWLINE;
- ERRORE;
- PAUSA;
- PAUSA;
- break;
- } // fine menu switch - case
- NEWLINE;
- } // fine ciclo do - while che fa riprodurre il menu
- while ( scelta != 0 );
- } // fine del main principale
- // Definizione delle funzioni in uso nel seguente programma
- // definizione della funzione Crea lista ( crea il primo elemento della lista )
- struct persona *creaLista ( void )
- {
- struct persona *p ; // creiamo il puntatore alla testa
- struct persona *paus; // creiamo il puntatore dei successivi elementi
- NEWLINE;
- // creazione del primo elemento
- p = ( struct persona * ) malloc ( sizeof ( struct persona ) ) ;
- printf ("Inserire il nome : ");
- scanf ("%s" , p->nome);
- printf ("Inserire il cognome : \t " );
- scanf ("%s" , p->cognome );
- printf ("Inseirire il codice fiscale : \t " );
- scanf ("%s" , p->cf);
- // Creaiamo il 2 elemento che momentaneante punta a null
- paus = p;
- paus->link = (struct persona *)malloc (sizeof ( struct persona ) );
- paus->link = NULL;
- return (p);
- } // fine della funzione crea Lista
- // Definizione della funzione crea lista 2 ( tutti gli elementi successivi )
- struct persona *creaLista2 ( struct persona *paus )
- {
- // Quando mandiamo in esecuzione questa funzione gia l'elemento successivo è stato creato e concide con NULL
- // Quindi riempiamo la struttura e creiamo un nuovo puntatore NULL
- NEWLINE;
- paus = paus->link;
- paus = (struct persona *)malloc ( sizeof ( struct persona) ) ;
- printf ("Inserire il nome : ");
- scanf ("%s" , paus->nome);
- printf ("Inserire il cognome : \t " );
- scanf ("%s" , paus->cognome );
- printf ("Inseirire il codice fiscale : \t " );
- scanf ("%s" , paus->cf);
- // creaimo lo spazio successivo e lo inizializziamo a NULL
- paus->link = (struct persona *)malloc ( sizeof ( struct persona) ) ;
- paus->link = NULL;
- return (paus);
- } // fine della definizione della funzione creaLista2
- // Definizione della funzione visualizza
- void visualizza ( struct persona *p)
- {
- int i ;
- NEWLINE;
- for ( i = 1 ; p != NULL ; i++)
- {
- printf ("___________________________________________________________________________\n\t\tDati %d° persona : " , i);
- printf ("\n\nNome : \t\t\t %s " , p->nome );
- printf ("\nCognome : \t\t %s " , p->cognome);
- printf ("\nCodice Fiscale : \t %s " , p->cf);
- p = p->link;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment