1

私は C でのコーディングに非常に慣れていません (したがって、私が取り組んでいるばかげた演習です)。

リンクされたリスト、リンクされたリストを印刷することになっている関数、およびメイン関数があります。

残念ながら、私の C の知識は、これが印刷されない理由を理解するのに十分ではありません。さらに残念なのは、このコードがクラッシュしないことです。

#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* next;
} *Node_t;

void print_list(Node_t root) {
    while (root) {
        printf("%c ", root->data);
        root = root->next;
    }
    printf("\n");
}

int main () {
    int i;
    int n = 6;
    Node_t list = (Node_t)malloc(sizeof(struct Node) * n);
    Node_t root;

    for (i=0; i < n; i++) {
        list[i].data = i+1;
        if (i == n-1) {
            list[i].next = 0;
        }
        else {
            list[i].next = &list[i+1];
        }
    }

    root = &(list[0]);

    print_list(root);
}
4

2 に答える 2

1

関数print_listの に間違った書式指定子がありprintfます。そのはず

printf("%d ", root->data);

修正されたコード:

void print_list(Node_t root) 
{
    while (root) {
        printf("%d ", root->data);
        root = root->next;
    }
    printf("\n");
}

結果をキャストする必要はありませんmalloc-これで問題ありません:

 Node_t list = malloc(sizeof(struct Node) * n);
于 2013-10-23T10:16:30.583 に答える