C 打印链表时没有输出
这是我为链表编写的代码。基本上,它只需要输入并打印。在编译时,它不会给出错误,但也不会给出输出。我不明白这个代码怎么了?帮帮我C 打印链表时没有输出,c,linked-list,C,Linked List,这是我为链表编写的代码。基本上,它只需要输入并打印。在编译时,它不会给出错误,但也不会给出输出。我不明白这个代码怎么了?帮帮我 #include<stdio.h> struct list { int data; struct list* next; }; insert(struct list* node, int data) { node = malloc(sizeof(struct list*)); if (node == NULL) node = da
#include<stdio.h>
struct list {
int data;
struct list* next;
};
insert(struct list* node, int data)
{
node = malloc(sizeof(struct list*));
if (node == NULL)
node = data;
else
node->data = data;
node->next = NULL;
return node;
}
printlist(struct list* node)
{
if (node == NULL)
printf("Empty list\n");
while(node->next != NULL)
printf("the list contains %d", node->data);
node = node->next;
}
main()
{
struct list* NODE;
NODE = malloc(sizeof(struct list*));
insert(NODE, 3);
insert(NODE, 5);
printlist(NODE);
}
#包括
结构列表{
int数据;
结构列表*下一步;
};
插入(结构列表*节点,整数数据)
{
node=malloc(sizeof(struct list*));
if(node==NULL)
节点=数据;
其他的
节点->数据=数据;
节点->下一步=空;
返回节点;
}
打印列表(结构列表*节点)
{
if(node==NULL)
printf(“空列表”);
while(节点->下一步!=NULL)
printf(“列表包含%d”,节点->数据);
节点=节点->下一步;
}
main()
{
结构列表*节点;
NODE=malloc(sizeof(struct list*));
插入(节点,3);
插入(节点,5);
打印列表(节点);
}
这是因为在保留节点指针时,没有保留节点指针,同时也删除了*
node=malloc(sizeof(struct list*));
尝试以下方法:
struct list * insert(struct list* node ,int data)
{
struct list * new_elem = malloc(sizeof(*new_elem)); //check !=NULL
new_elem->data = data;
new_elem->next = NULL;
if (node != NULL)
node->next = new_elem;
return (new_elem);
}
实际上,它包含很多错误 重写insert(): 在printlist()中,不能将某些代码用空格而不是“;”,也就是说,更改
while(node!=NULL)
printf("the list contains %d\n",node->data);
node=node->next;
到
旧的insert()中也存在相同的错误
虽然没有printlist()的返回值类型,但是可以编译它,但我建议添加一个,比如void
此外,对于空列表,您需要更改:
if (node==NULL)
printf("Empty list\n");
到
}
使用此新的insert(),main()将是:
我已经测试过,在这个修复之后,它可以工作。+1您指出的第一个错误也出现在main()中,第二个
node=data;//不兼容的类型
在insert()
函数中(同时添加这2个点),我的答案不完整,因此删除。是,它现在工作:)thnks@user2456752好吧,还有一个bug,我在下面编辑过,它的开头是“另外,对于空列表,您需要更改…”@user2456752,对于malloc()
,您可能需要一个#include
while(node!=NULL) {
printf("the list contains %d\n",node->data);
node=node->next;
}
if (node==NULL)
printf("Empty list\n");
if (node==NULL) {
printf("Empty list\n");
return;
main()
{
struct list* NODE = NULL;
NODE = insert(NODE,3);
NODE = insert(NODE,5);
printlist(NODE);
}