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指向的不是所要的結(jié)點(diǎn),并且后還有結(jié)點(diǎn)。{p2 = p1;p1 = p1->next;//p1向后移一個(gè)結(jié)點(diǎn)。}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);//找不到該結(jié)點(diǎn)。}end://這個(gè)end是什么意思?為什么寫在這里?return head;}
2 回答

ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
"goto xxx"表示跳轉(zhuǎn)到"xxx :"節(jié)點(diǎn)處,這里的"end"就相當(dāng)于"xxx",并無實(shí)際意義僅作閱讀方便。
該代碼的目的是如果“head"(目測是鏈表頭)是空指針就直接退出函數(shù),因此在if(head == NULL)下直接跳轉(zhuǎn)到"end"也就是標(biāo)記好的函數(shù)的末尾處

呼喚遠(yuǎn)方
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
end冒號表示這里是一個(gè)goto可以跳轉(zhuǎn)到的標(biāo)記,這樣在本函數(shù)內(nèi)就可以隨時(shí)用goto跳轉(zhuǎn)到這個(gè)標(biāo)記所在位置然后從這個(gè)位置繼續(xù)執(zhí)行……
添加回答
舉報(bào)
0/150
提交
取消