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时,head->数据应为3,head->next
应为NULL
,当调用print函数时,不应输入if阻止head->next
为NULL
,但3正在打印。
为什么要打印3?
答案 0 :(得分:0)
首先,这一切都取决于你在打印功能中传递的内容(打印功能中的头部是什么)。
我想你是这样写的,比如主函数: -
head =(node *)malloc(sizeof(node));
/////更多代码
现在你在打印功能中传递了这个头,其值为3并且head-> next是NULL而不是head。 我只是假设这是你必须编写主要功能的方式,如果是这样,那么我已经回答了你的问题。
谢谢