我很擅长使用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);
}
答案 0 :(得分: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);
答案 1 :(得分:0)
printf(“%d”,root-&gt;数据);而不是printf(“%c”,root-&gt;数据);因为您要将整数数据分配到列表