Мой подход:
Массив фиксированной длины (скажем, 20), каждый элемент является указателем на первый узел связанного списка. Итак, у меня есть 20 различных связанных списков.
Это структура:
struct node{
char data[16];
struct node *next;
};
Мое объявление для этого массива
struct node *nodesArr[20];
теперь, чтобы добавить новый узел в один из связанных списков, я делаю следующее:
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")
Функция 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;
}
и чтобы распечатать данные из массива связанного списка, я делаю следующее:
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;
}
}
}
теперь компилятор не выдает ошибок, программа запускается, и я передаю ей данные, и когда я вызываю print, он ничего не выводит. вещь ,, ??
ОБНОВЛЕНИЕ ::
после того, как я отредактировал код (спасибо), я думаю, проблема в функции печати, есть идея?