Advertisement
ConciCetto

Determinare il Maggiore di una lista

Jun 11th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.15 KB | None | 0 0
  1. /*memorizza in una lista. La sequenza termina quando
  2. viene immesso il valore zero. La lista creata viene
  3. visualizzata. Determina il maggiore della lista */
  4.  
  5. #include <stdio.h>
  6. #include <malloc.h>
  7. #include <limits.h>
  8.  
  9. struct elemento {
  10.        int inf;
  11.        struct elemento *pun;
  12.        };
  13.        
  14. struct elemento *crea_lista2();
  15.  
  16. void visualizza_lista(struct elemento *);
  17.  
  18. int maggiore_lista(struct elemento *);
  19.  
  20. main()
  21. {
  22.       struct elemento *punt_lista; /* Puntatore alla testa della lista */
  23.       punt_lista = crea_lista2(); /* Chiamata funzione per creare la lista */
  24.       visualizza_lista(punt_lista); /* Chiamata funzione per visualizzare la lista */
  25.       /* Stampa il valore di ritorno della funzione maggiore_lista() */
  26.       printf("\nIl maggiore e': %d\n\n", maggiore_lista(punt_lista));
  27.       getch();
  28. }
  29.  
  30. /* Accetta in ingresso una sequenza di interi e li memorizza in una lista. Il numero di interi che compongono la sequenza termina con il valore zero */
  31. struct elemento *crea_lista2()
  32. {
  33.        struct elemento *p, *paus;
  34.        struct elemento x;
  35.        printf("\nInserisci un'informazione (0 per fine lista): ");
  36.        scanf("%d", &x.inf);
  37.        if(x.inf==0) p = NULL; /* Lista vuota */
  38.        else {
  39.             /* Creazione del primo elemento */
  40.             p = (struct elemento *)malloc(sizeof(struct elemento));
  41.             p->inf = x.inf;
  42.             paus=p;
  43.            
  44.             while(x.inf!=0) {
  45.                             printf("\nInserisci un'informazione (0 per fine lista): ");
  46.                             scanf("%d", &x.inf);
  47.                             if(x.inf!=0) {
  48.                                          /* creazione dell'elemento successivo */
  49.                                          paus->pun = (struct elemento *)malloc(sizeof(struct elemento));
  50.                                          paus = paus->pun; /* Attualizzazione di paus */
  51.                                          paus->inf = x.inf; /* Inserimento dell'informazione nell'elemento */
  52.                                          }
  53.                             else
  54.                             paus->pun = NULL; /* Marca di fine lista */
  55.                             }
  56.             }
  57. return(p);
  58. }
  59.  
  60. /* Determina il maggiore della lista. Il parametro in ingresso รจ il puntatore alla testa */
  61. maggiore_lista(struct elemento *p)
  62. {
  63.           int max = INT_MIN;
  64.                       /* Ciclo di scansione della lista */
  65.                       while(p != NULL) {
  66.                               if(p->inf > max)
  67.                               max = p->inf;
  68.                               p = p->pun; /* Scorre di un elemento in avanti */
  69.                                         }
  70.            return(max);
  71. }
  72.  
  73.  
  74. /* Visualizza la lista */
  75. void visualizza_lista(struct elemento *p)
  76. {
  77.      printf("\npunt_lista---> ");
  78.      
  79.      /* Ciclo di scansione della lista */
  80.      while(p!=NULL) {
  81.                     printf("%d", p->inf); /* Visualizza il campo informazione */
  82.                     printf("---> ");
  83.                     p = p->pun; /* Scorre di un elemento in avanti */
  84.                     }
  85.      printf("NULL\n\n");
  86.      system("PAUSE");
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement