Advertisement
davide1409

ese2.c

Nov 23rd, 2021
784
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include "list.h"
  3. #include <stdlib.h>
  4.  
  5. int delete_even_more_odd(list_t *L, node_t* Head){
  6.     if(L == NULL)
  7.         return -1;
  8.     if(empty(L))
  9.         return 2;
  10.    
  11.     // passo base della ricorsione
  12.     if(next(Head) == NULL){ // siamo arrivati alla coda
  13.         if(get_val(Head) % 2 == 0){
  14.             delete(L,Head);
  15.         }
  16.  
  17.         else{
  18.             return 1;
  19.         }
  20.     }
  21.  
  22.     delete_even_more_odd(L, next(Head));
  23.    
  24.     if(get_val(Head) % 2 != 0)
  25.         return 0; // non pari
  26.     else{
  27.         if(next(Head) != NULL){
  28.                 if( insert(L, Head, get_val(next(Head))) == NULL ){
  29.                     exit(-5); // creazione nodo non avvenuta con successo
  30.                 }
  31.         }
  32.        
  33.         delete(L,Head);
  34.        
  35.         return 1;
  36.     }
  37. }
  38.  
  39. int main(int argc, char **argv){
  40.     if(argc == 1){
  41.         printf("Usage %s: %s <num1, num2, num3, ...>\n", argv[0], argv[0]);
  42.         exit(-1);
  43.     }
  44.    
  45.     int vals[argc-1];
  46.     for(int i = 0; i!=argc-1; i++)
  47.         vals[i] = atoi(argv[i+1]);
  48.    
  49.     // vals ha tutti i valori che ci servono ora!
  50.  
  51.     list_t L;
  52.     if(init_list(&L))
  53.         return -1;
  54.  
  55.     node_t *nodo = NULL;
  56.     for(int i = 0; i!=argc-1; i++){
  57.         nodo = insert(&L, nodo, vals[i]);
  58.         if(nodo == NULL)
  59.             return -1;
  60.     }          
  61.     printf("La lista dei valori dati: ");
  62.     print_list(&L);
  63.  
  64.     int ret = delete_even_more_odd(&L, head(&L));
  65.     printf("Il valore di ritorno della funzione: %d\n", ret);
  66.  
  67.     switch(ret){
  68.         case -1:
  69.             puts("Lista Nulla!");
  70.             exit(-3);
  71.             break;
  72.  
  73.         case 2:
  74.             puts("Lista Vuota!");
  75.             exit(-2);
  76.             break;
  77.  
  78.         default:
  79.             break;
  80.     }
  81.  
  82.  
  83.     printf("\nLa lista dopo le modifiche: ");
  84.     print_list(&L);
  85.  
  86.     return 0;
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement