有时我问了一个关于链表的问题并得到了很好的答复......现在我已经使用这些建议编写了一个新代码,但我遇到了一个错误。代码是:
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
}node;
node *mknode()
{
return malloc(sizeof(node));
}
void create(node* h, int num)
{
int i;
node *temp=h;
for(i=0;i<num;i++)
{
temp->data=i;
if(i==(num-1))
temp->next=NULL;
else
temp->next=mknode();
temp=temp->next;
}
}
node* add_end(node *h,int num)
{
node *temp;
if(h==NULL)
{
h=mknode();
temp=h;
create(h,num);
}
else
{
temp=h;
while(h!=NULL){
h=h->next;}
h=mknode();
create(h,num);
}
return temp;
}
void display(node *h)
{
node *temp=h;
while(temp!=NULL)
{
printf("%d->",temp->data);
temp=temp->next;
}
}
int main()
{
node *head=NULL;
int num;
scanf("%d",&num);
head=add_end(head,num);
head=add_end(head,num);
display(head);
//printf("%d",list_len(head));
free(head);
return 0;
}
现在,由于我为输入 3 调用了 add_end 两次,因此输出应该是 0->1->2->0->1->2-> 但我得到的是 0->1->2->
我已经检查了很多,create 函数中的 FOR 循环对于 n 的输入运行了 2n 次。所以问题是显示函数遇到 NULL 但我无法弄清楚它发生在代码中的哪个位置。
所有帮助表示赞赏。提前致谢 -user1614886