猿问

有没有大佬帮忙结合下列简要介绍下goto的用法及end的意义?谢谢!

struct student* del(struct student* head, long num)
{
struct student *p1, *p2;
if(head == NULL)
{
printf("\nlist null\n");
goto end;
}

p1 = head;

while(num != p1->num && p1->next != NULL)//p1指向的不是所要的结点,并且后还有结点。
{
p2 = p1;
p1 = p1->next;//p1向后移一个结点。
}

if(num == p1->num)
{
if(p1 == head)
{
head = p1->next;
}
else
{
p2->next = p1->next;
}

printf("delete:%ld\n",num);

n = n-1;
}

else
{
printf("%ld not been found!\n", num);//找不到该结点。
}
end://这个end是什么意思?为什么写在这里?

return head;
}

慕沐林林
浏览 431回答 2
2回答

ABOUTYOU

"goto xxx"表示跳转到"xxx :"节点处,这里的"end"就相当于"xxx",并无实际意义仅作阅读方便。该代码的目的是如果“head"(目测是链表头)是空指针就直接退出函数,因此在if(head == NULL)下直接跳转到"end"也就是标记好的函数的末尾处

呼唤远方

end冒号表示这里是一个goto可以跳转到的标记,这样在本函数内就可以随时用goto跳转到这个标记所在位置然后从这个位置继续执行……
随时随地看视频慕课网APP
我要回答