View Full Version : [C] Liste
sto scrivendo del codice che usa una lista con doppio link (precedente e successivo). Nel caso di rimozione di un elemento intermedio vorrei semplicemente reindirizzare i puntatori degli elementi precedente e successivo.
dcc_struct_indice->prev->next=dcc_struct_indice->next;
dcc_struct_indice->next->prev=dcc_struct_indice->prev;
Il compilatore mi dice: error: dereferencing pointer to incomplete type
Anche con le partentesi idem, dove sbaglio ?
ilsensine
19-06-2007, 10:48
Quell'errore viene generato quando di un puntatore hai a disposizione la dichiarazione "anonima" dell'oggetto puntato, ad es:
struct mystruct;
e non la definizione completa.
In un file lista.h ho definito:
typedef struct buffer_dcc_struct {
unsigned int dcc_byte1;
unsigned int dcc_byte2;
struct dcc_struct *next;
struct dcc_struct *prev;
} dcc_struct;
E nella mia funzione ho definito
dcc_struct *dcc_struct_indice,*temp;
ilsensine
19-06-2007, 11:00
...e la struct dcc_struct la definisci dove? :)
(hint: cambia la definizione di *prev e *next come struct buffer_dcc_struct)
...e la struct dcc_struct la definisci dove? :)
(hint: cambia la definizione di *prev e *next come struct buffer_dcc_struct)
Grazie per l'aiuto :) effettivametne oltre a sparire il messaggio di errore sono spariti anche una serie di messaggi di warning !
Riferita alla lista di prima, è giusta la sequente funzione ? Mi torna sempre 0.
dcc_struct *newslot(void)
{
return (struct buffer_dcc_struct *)malloc(sizeof(struct buffer_dcc_struct));
}
ilsensine
19-06-2007, 13:38
E' giusta e non può ritornare NULL.
Nota che "struct buffer_dcc_struct" è necessario solo per dichiarare prev e next, in qualsiasi altra parte puoi usare il typedef dcc_struct.
La funzione mi ritorna sempre 0 no NULL :( non vorrei che sia un problema delle librerie che sto usando.
ilsensine
19-06-2007, 14:10
La funzione mi ritorna sempre 0 no NULL :(
NULL corrisponde a (void *) 0
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.