void create(node *head)//function to create a linked list
{
int n;
printf("enter number");
printf("if end enter -999");
scanf("%d",&n);
if(n == -999)
{
head=NULL;
}
else
{
head->data=n;
head->next=(node *)malloc(sizeof(node));
create(head->next);
}
return;
}
void print(node *head)//function to print linked list
{
if(head->next != NULL)
{
printf("%d n",head->data);
print(head->next);
}
return;
}
在这里,当第一个数字输入为3,下一个数字输入为-999,头->数据应该变成3,head->next
应该是NULL
,当打印函数被调用时,它不应该进入if块,因为head->next
是NULL
,但3正在被打印。
为什么打印3 ?
首先,这取决于你在打印函数中传递的内容(打印函数中的head是什么)。
我想你是这样写的,比如在main函数中:-
head = (node *)malloc(sizeof(node));
/////更多代码
现在你在打印函数中传递了这个头,它的值为3,而head->next是NULL而不是头。我只是假设这是你必须写你的主函数的方式,如果是这样,那么我已经回答了你的查询。
谢谢