mio approccio:trattare con array di lista collegata
Un array di lunghezza fissa (diciamo 20) ogni elemento è puntatore al primo nodo di una lista collegata. quindi ho 20 diversi elenchi collegati.
Questa è la struttura:
struct node{
char data[16];
struct node *next;
};
La mia dichiarazione per tale matrice
struct node *nodesArr[20];
ora per aggiungere un nuovo nodo ad uno della lista collegata, faccio questo:
struct node *temp;
temp = nodesArr[i]; // i is declared and its less than 20
addNode(temp,word); // word is declared (char *word) and has a value ("hello")
La funzione addNode:
void addNode(struct node *q, char *d){
if(q == NULL)
q = malloc(sizeof(struct node));
else{
while(q->next != NULL)
q = q->next;
q->next = malloc(sizeof(struct node));
q = q->next;
}
q->data = d; // this must done using strncpy
q->next = NULL;
}
e per stampare i dati dalla matrice di lista collegata, faccio questo:
void print(){
int i;
struct node *temp;
for(i=0 ; i < 20; i++){
temp = nodesArr[i];
while(temp != NULL){
printf("%s\n",temp->data);
temp = temp->next;
}
}
}
ora compilatore dà nessun errore, l'esecuzione del programma e mi passa i dati ad esso, e quando mi chiamano di stampa è non stampa niente ??
AGGIORNAMENTO ::
dopo ho modificato il codice (thx per voi), penso che il problema nella funzione di stampa ,, qualche idea?
Avete provato a passarlo attraverso un debugger o aggiungendo utili istruzioni 'printf'? –
sì, ho provato, ma non ho ottenuto nulla –
Non hai niente? Quindi non è possibile, ad esempio, scoprire a che punto tutti gli elementi di 'nodesArr' sono diventati' NULL'? –