Mi enfoque:tratar con gran variedad de lista enlazada
Una matriz de longitud fija (digamos que 20), cada elemento es puntero al primer nodo de una lista enlazada. entonces tengo 20 listas enlazadas diferentes.
Esta es la estructura:
struct node{
char data[16];
struct node *next;
};
Mi declaración de dicho array
struct node *nodesArr[20];
ahora para añadir un nuevo nodo a uno de la lista enlazada, hago esto:
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 función 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 imprimir los datos de la matriz de la lista enlazada, hago esto:
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;
}
}
}
ahora compilador da ningún error, la ejecución del programa y que pase los datos a ella, y cuando llamo de impresión se no imprime nada?
ACTUALIZACIÓN ::
después edité el código (THX para usted), creo que el problema en la función de impresión ,, alguna idea?
¿Ha intentado pasarlo a través de un depurador, o agregar declaraciones 'printf' útiles? –
Sí, lo intenté, pero no tengo nada –
¿No tienes nada? Entonces, no podría, por ejemplo, descubrir en qué punto todos los elementos de 'nodesArr' se convirtieron en' NULL' –