AleksandarArkan

L - creazione e stampa di una lista concatenata

Apr 3rd, 2015
268
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct elemento {
  5.     int inf;
  6.     struct elemento *next;
  7.     };
  8.    
  9. //defininisco la funzione crealista
  10. struct elemento *crealista(){
  11.     /*dichiriamo due puntatori di tipo della nostra struttura
  12.      il primo puntatore di nome p, serve per puntare al primo elemento
  13.      * della nostra lista, il secondo invece serve per scorrere la lista*/
  14.     struct elemento *p,*punt;
  15.    
  16.     int i, n;
  17.    
  18.     //chiediamo all'utente quanti elementi dobbiamo creare
  19.     printf("Specificare numero di elementi: ");
  20.     scanf("%d", &n);
  21.    
  22.     if(n==0)
  23.         return NULL;
  24.     else{//inizio else
  25.         //creo il primo elemento
  26.         p=(struct elemento *)malloc(sizeof(struct elemento));
  27.         printf("ins il primo valore: \n");
  28.         scanf("%d", &p->inf);
  29.         punt=p;
  30.        
  31.        
  32.         //per adesso ho solo un elemento, ed ho che il puntatore p, indica
  33.         //il primo elemento, mentre il puntatore punt punta all'ultimo
  34.         //elemento (in questo caso unico anche)
  35.        
  36.         //creo gli elementi che mancano
  37.         for(i=2;i<=n;i++){//inizio for
  38.             //alloco la memoria per l'elemento successivo
  39.             punt->next=(struct elemento *)malloc(sizeof(struct elemento));
  40.             punt=punt->next;//punt punta al prossimo elemento, cioe alla memoria
  41.             //che ho appena allocato
  42.            
  43.             //inserisco l'informazione dentro alla struttura
  44.             printf("Inserisci l'elemento \n");
  45.             scanf("%d", &punt->inf);
  46.  
  47.             }//fine for    
  48.         //se sono qui vuol dire che ho creato tutti gli elementi, ora
  49.         //devo solo far puntare l'ultimo elemento a null, perche
  50.         //cosi facciamo in modo che sia la fine della lista.
  51.        
  52.         punt->next=NULL;
  53.         }//fine else
  54.     return p; //ritorno il puntatore al primo elemento della lista
  55. }
  56.    
  57. //stampa la lista
  58. void visualizza_lista(struct elemento *p) {
  59.     printf("\n lista ---> ");
  60.     while(p != NULL){
  61.         printf("%d", p->inf); /* visualizza l'informazione */
  62.         printf(" ---> ");  
  63.         p = p->next; /* scorre la lista di un elemento */
  64.         }
  65.  
  66.     printf("NULL\n\n");
  67. }
  68. int main(){
  69.     struct elemento *lista;
  70.     lista=crealista();
  71.     //stampa lista usando la funzione
  72.     visualizza_lista(lista);
  73.    
  74.    
  75.     //stampa lista senza usare la funzione
  76.     while(lista!=NULL){
  77.         printf("%d --> ", lista->inf);
  78.         lista=lista->next;
  79.         }
  80.    
  81.     return 0;
  82. }
Advertisement
Add Comment
Please, Sign In to add comment