Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include "list.h"
- #include <stdlib.h>
- int delete_even_more_odd(list_t *L, node_t* Head){
- if(L == NULL)
- return -1;
- if(empty(L))
- return 2;
- // passo base della ricorsione
- if(next(Head) == NULL){ // siamo arrivati alla coda
- if(get_val(Head) % 2 == 0){
- delete(L,Head);
- }
- else{
- return 1;
- }
- }
- delete_even_more_odd(L, next(Head));
- if(get_val(Head) % 2 != 0)
- return 0; // non pari
- else{
- if(next(Head) != NULL){
- if( insert(L, Head, get_val(next(Head))) == NULL ){
- exit(-5); // creazione nodo non avvenuta con successo
- }
- }
- delete(L,Head);
- return 1;
- }
- }
- int main(int argc, char **argv){
- if(argc == 1){
- printf("Usage %s: %s <num1, num2, num3, ...>\n", argv[0], argv[0]);
- exit(-1);
- }
- int vals[argc-1];
- for(int i = 0; i!=argc-1; i++)
- vals[i] = atoi(argv[i+1]);
- // vals ha tutti i valori che ci servono ora!
- list_t L;
- if(init_list(&L))
- return -1;
- node_t *nodo = NULL;
- for(int i = 0; i!=argc-1; i++){
- nodo = insert(&L, nodo, vals[i]);
- if(nodo == NULL)
- return -1;
- }
- printf("La lista dei valori dati: ");
- print_list(&L);
- int ret = delete_even_more_odd(&L, head(&L));
- printf("Il valore di ritorno della funzione: %d\n", ret);
- switch(ret){
- case -1:
- puts("Lista Nulla!");
- exit(-3);
- break;
- case 2:
- puts("Lista Vuota!");
- exit(-2);
- break;
- default:
- break;
- }
- printf("\nLa lista dopo le modifiche: ");
- print_list(&L);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement