PDA

View Full Version : Errore di dereferenziazione


Alexgd
16-01-2019, 16:02
Ho un problema con questo semplice esercizio sulle liste. In pratica non fa altro che creare una lista e andare a inserire in ogni nodo un carattere preso da una stringa in input.. L'errore è alla riga 21 ed è:

21|error: dereferencing pointer to incomplete type 'ELEMENT {aka struct lista}

Vi lascio qui il codice:

#include <stdio.h>
#include <stdlib.h>

struct list{
char d;
struct lista *next;
};
typedef struct lista ELEMENT;
typedef ELEMENT *LINK;

LINK array_to_list(char []);

int main()
{
char c_array[] = "questa e' una stringa di prova!";
LINK testa,ptr;
testa = array_to_list(c_array);
ptr = testa;
while(ptr != NULL)
{
putchar(ptr -> d); //<-- QUI C'E' L'ERRORE
ptr = ptr -> next;
}
puts("");
}

LINK array_to_list(char s[]){
LINK testa;
if (s[0] == '\0') return NULL;
else{
testa = malloc(sizeof(ELEMENT));
testa -> d = s[0];
testa -> next = array_to_list(s+1);
return testa;
}
}

-MiStO-
16-01-2019, 16:41
beh ci sono un po' di errori...ti consiglio di rileggere bene il tuo codice, e vedere che i nomi ed i tipi scelti scelti combacino :)
tra l'altro il messaggio di errore ti aiuta pure: ti dice che ELEMENT è incompleto (non trova una definizione), controlla bene come l'hai dichiarato e vai a ritroso ;)

Alexgd
16-01-2019, 16:52
beh ci sono un po' di errori...ti consiglio di rileggere bene il tuo codice, e vedere che i nomi ed i tipi scelti scelti combacino :)
tra l'altro il messaggio di errore ti aiuta pure: ti dice che ELEMENT è incompleto (non trova una definizione), controlla bene come l'hai dichiarato e vai a ritroso ;)

L'errore era qui, struct list{ non è list ma lista, grazie.