C 无法打印链接列表

C 无法打印链接列表,c,pointers,linked-list,printf,C,Pointers,Linked List,Printf,我对C语言的编码非常陌生(因此我正在做一个愚蠢的练习) 我有一个链表,一个用来打印我的链表的函数,还有一个主函数 不幸的是,我的C语言知识还不足以理解为什么这不是打印。更不幸的是,这段代码没有崩溃 #include <stdio.h> #include <stdlib.h> typedef struct Node { int data; struct Node* next; } *Node_t; void print_list(Node_t root)

我对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);
}
#包括
#包括
类型定义结构节点{
int数据;
结构节点*下一步;
}*节点t;
无效打印列表(节点根){
while(根){
printf(“%c”,根->数据);
根=根->下一步;
}
printf(“\n”);
}
int main(){
int i;
int n=6;
Node_t list=(Node_t)malloc(sizeof(struct Node)*n);
节点根;
对于(i=0;i
您的
打印列表
函数在
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);

您的
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);

printf(“%d”,根->数据);而不是printf(“%c”,根->数据);因为您正在将整数数据分配给列表(“%d”,根->数据);而不是printf(“%c”,根->数据);因为您正在将整数数据分配给列表

从不强制转换malloc()的结果从不强制转换malloc()的结果