遍历后删除表

时间:2012-12-02 22:59:30

标签: c pointers linked-list hashtable

出于某种原因,每当我访问表格中的任何数据时,内容都会被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

2 个答案:

答案 0 :(得分: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");
}

答案 1 :(得分: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");
}