我想用C创建一个单独的链表。为什么这段代码不起作用?代码如下。我正在使用CodeBlocks来运行这是一个开源编译器。
#include<stdio.h>
#include<malloc.h>
struct node
{
int info;
struct node *next;
}*first=NULL;
void create()
{
struct node *ptr;
int i,n;
printf("Enter the number of nodes");
scanf("%d", &n);
for(i=0;i<n;i++)
{
ptr=(struct node *)malloc(sizeof(struct node));
printf("Enter the data.");
scanf("%d",&ptr->info);
ptr=ptr->next;
if(first==NULL)
{first=ptr;}
}
ptr->next=NULL;
}
void main()
{
create();
}
答案 0 :(得分:0)
当你在循环中执行ptr=ptr->next;
时,你会松开ptr
,然后指向垃圾,因为next
尚未初始化。因此,首先将ptr
链接到列表中,然后转到next
。
这样做我作为练习离开你。