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");
}

私が試したことは何もありません。テーブルは 1 回印刷されnull、2 回目に返されます。

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 に答える