работа с массивом связанный список

Мой подход:

Массив фиксированной длины (скажем, 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, он ничего не выводит. вещь ,, ??

ОБНОВЛЕНИЕ ::

после того, как я отредактировал код (спасибо), я думаю, проблема в функции печати, есть идея?

7
задан Rami Jarrar 9 February 2011 в 07:10
поделиться