0

出于某种原因,每当我访问表中的任何数据时,内容都会被替换为null. 该表是一个链表数组。

void print(struct foo ** bar) {
    struct foo ** helper = bar;
    for (i = 0; i < size; i++) {
        printf("%d: ", i);
        while (helper[i] != NULL) {
            printf("%s ", helper[i]->data);
            helper[i] = helper[i]->next;
        }
        printf("\n");
    }
    printf("\n");
}

我尝试的任何方法都不起作用。该表打印一次,然后返回null第二次。

4

2 回答 2

2

好吧,你修改你的数组

helper[i] = helper[i]->next;

最终将其设置为 NULL。所以,你的问题不足为奇。

如果你想遍历你的哈希表,试试

struct foo *helper;
for (i = 0; i < tablesize; i++) {
    printf("%d: ", i);
    for (helper = bar[i]; helper != NULL; helper = helper->next)
        printf("%s ", helper->data);

    printf("\n");
}
于 2012-12-02T23:09:12.583 回答
1
void print(struct foo ** bar) {

    int i;
    struct foo *ptr ;

    for (i = 0; i < tablesize; i++) {
        if (!bar[i]) continue;
        printf("%d: ", i);

        for (ptr=bar[i] ; ptr ; ptr = ptr->next ) {
            printf("%s ", ptr->data);
        }

        printf("\n");
    }
    printf("\n");
}
于 2012-12-02T23:09:24.823 回答