SHARE
TWEET

Liste completo 2

a guest Jul 15th, 2019 85 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. typedef struct s {
  6.     int info;
  7.     struct s *next;
  8. }nodo, *lista;
  9.  
  10. //Dichiarazione Funzioni lista
  11. void MakeNullList(lista *L);
  12. int EmptyList(lista L);
  13. void AggiungiInTesta(lista *L, int x);
  14. int VisualizzaTesta(lista L);
  15. void Coda(lista *L);
  16. void CancellaPrimo(lista *L);
  17. void CancellaLista1(lista *L);
  18. void CancellaLista2(lista *L);
  19. void VisitaLista(lista L);
  20. void InserisciInCoda(lista *L, int x);
  21. void CancellaModoMio(lista *L, int x);
  22.  
  23. int main(void) {
  24.     lista l;
  25.     int scelta, elemento;
  26.     MakeNullList(&l);
  27.    
  28.     printf("0 per aggiungere un elemento in testa.\n");
  29.     printf("1 per visualizzare la coda della lista.\n");
  30.     printf("2 per visualizzare l'elemento in testa.\n");
  31.     printf("3 per cancellare il primo elemento.\n");
  32.     printf("4 per cancellare tutta la lista (iterativa)\n");
  33.     printf("5 per cancellare tutta la lista (ricorsiva)\n");
  34.     printf("6 per stampare la lista.\n");
  35.     printf("7 per aggiungere un elemento alla fine.\n");
  36.  
  37.     printf("-1 per chiudere il programma.\n");
  38.  
  39.     scanf("%d", &scelta);
  40.  
  41.     while (scelta != -1) {
  42.         switch (scelta) {
  43.         case 0:
  44.             printf("Inserisci l'elemento da aggiungere.\n");
  45.             scanf("%d", &elemento);
  46.             AggiungiInTesta(&l, elemento);
  47.             break;
  48.         case 1:
  49.             Coda(&l);
  50.             VisitaLista(l);
  51.             break;
  52.         case 2:
  53.             printf("\nL'elemento in testa e' %d.\n", VisualizzaTesta(l));
  54.             break;
  55.         case 3:
  56.             CancellaPrimo(&l);
  57.             VisitaLista(l);
  58.             break;
  59.         case 4:
  60.             CancellaLista1(&l);
  61.             VisitaLista(l);
  62.             break;
  63.         case 5:
  64.             CancellaLista2(&l);
  65.             VisitaLista(l);
  66.             break;
  67.         case 6:
  68.             VisitaLista(l);
  69.             break;
  70.         case 7:
  71.             printf("Inserisci l'elemento da aggiungere.\n");
  72.             scanf("%d", &elemento);
  73.             InserisciInCoda(&l, elemento);
  74.             break;
  75.  
  76.         default:
  77.             printf("Opzione non esistente.\n");
  78.             break;
  79.         }
  80.         printf("0 per aggiungere un elemento in testa.\n");
  81.         printf("1 per visualizzare la coda della lista.\n");
  82.         printf("2 per visualizzare l'elemento in testa.\n");
  83.         printf("3 per cancellare il primo elemento.\n");
  84.         printf("4 per cancellare tutta la lista (iterativa)\n");
  85.         printf("5 per cancellare tutta la lista (ricorsiva)\n");
  86.         printf("6 per stampare la lista.\n");
  87.         printf("7 per aggiungere un elemento alla fine.\n");
  88.         printf("-1 per chiudere il programma.\n");
  89.  
  90.         scanf("%d", &scelta);
  91.     }
  92.  
  93.     return EXIT_SUCCESS;
  94. }
  95.  
  96. void MakeNullList(lista *L) {
  97.     *L = NULL;
  98. }
  99.  
  100. int EmptyList(lista L) {
  101.     return (L == NULL);
  102. }
  103.  
  104. void AggiungiInTesta(lista *L, int x) {
  105.     lista paux;
  106.     paux = (lista)malloc(sizeof(nodo));
  107.     if (paux == NULL) {
  108.         printf("Errore allocazione memoria.\n\a");
  109.         exit(1);
  110.     }
  111.     paux->info = x;
  112.     paux->next = *L;
  113.     *L = paux;
  114. }
  115.  
  116. int VisualizzaTesta(lista L) {
  117.     if (!EmptyList(L))
  118.         return (L->info);  
  119. }
  120.  
  121. void Coda(lista *L) {
  122.     if (!EmptyList(*L)) {
  123.         *L = (*L)->next;
  124.     }
  125. }
  126.  
  127. void CancellaPrimo(lista *L) {
  128.     lista paux;
  129.     if (!EmptyList(*L)) {
  130.         paux = *L;
  131.         Coda(&*L);
  132.         free(paux);
  133.     }
  134. }
  135.  
  136. void CancellaLista1(lista *L) {
  137.     lista paux;
  138.     while (!EmptyList(*L)) {
  139.         paux = *L;
  140.         Coda(&*L);
  141.         free(paux);
  142.     }
  143. }
  144.  
  145. void CancellaLista2(lista *L) {
  146.     lista paux;
  147.     if (!EmptyList(*L)) {
  148.         paux = (*L)->next;
  149.         free(*L);
  150.         CancellaLista2(&paux);
  151.         *L = NULL;
  152.     }
  153. }
  154.  
  155. void VisitaLista(lista L) {
  156.     while (EmptyList(L)== 0) {
  157.         printf("%d\n", L->info);
  158.         L = L->next;
  159.     }
  160. }
  161.  
  162. void InserisciInCoda(lista *L, int x) {
  163.     lista paux, ultimo;
  164.     paux = (lista)malloc(sizeof(nodo));
  165.     if (paux == NULL) {
  166.         printf("Errore allocazione memoria.\n");
  167.         exit(1);
  168.     }
  169.     paux->info = x;
  170.     paux->next = NULL;
  171.     if (*L == NULL)
  172.         *L = paux;
  173.     else {
  174.         ultimo = *L;
  175.         while (ultimo->next != NULL)
  176.             ultimo = ultimo->next;
  177.         ultimo->next = paux;
  178.     }
  179. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top