Andrea Quaglia ha scritto:
Intanto, la funzione ListaSomma non può avere tipo di ritorno 'void'.
#include <stdio.h>
#include <stdlib.h>
struct lista
{
int key;
int ITEM;
struct lista *next;
};
struct lista *aggiungi(struct lista *top, struct lista *nuovo);
struct lista *nuovo();
void stampa(struct lista *top);
struct lista *dealloca(struct lista *top);
int SUM(struct lista *radice);
int HEAD(struct lista *radice);
int TAIL( struct lista *radice);
int main()
{ int n;
struct lista *top;
system("clear");
printf("Questo programma somma e sostituisce gli elementi consecutivi in una lista\n");
printf("Inserisci il numero di elementi che la lista contiene: ");
scanf("%d", &n);
printf("Inserisci gli elementi: ");
for ( ; n>0; n--)
top = aggiungi(top, nuovo());
printf("\nEcco la lista inserita: ");
stampa(top);
sommaConsecutivi(top);
printf("\nEcco la lista modificata: ");
stampa(top);
top = dealloca(top);
return 0;
}
struct lista *aggiungi(struct lista *top, struct lista *nuovo)
{ if (top==NULL)
{ nuovo->next = top;
return nuovo;
}
top->next = aggiungi(top->next, nuovo);
return top;
}
struct lista *nuovo()
{ struct lista *nuovo = (struct lista *)malloc(sizeof(struct lista));
scanf("%d", &nuovo->key);
return nuovo;
}
void stampa(struct lista *top)
{ if (top!=NULL)
{ printf("%d --> ", top->key);
stampa(top->next);
}
else printf("NULL\n\n");
return;
}
struct lista *dealloca(struct lista *top)
{ if(top!=NULL)
{ dealloca(top->next);
free(top);
}
return NULL;
int HEAD(struct lista *radice)
{
if(radice == nil){
return nil;
}else{
return radice-->ITEM;
}
}
int TAIL( struct lista *radice)
{
if(radice == nil)
return nil
else
return radice-->next;
}
}
int SUM(struct lista *radice)
{
if(radice == nil)
return 0;
else
return (HEAD(radice)+SUM(TAIL(radice)));
}
Ho provato cosi ma comunque mi da errore...come posso fare?