我的教科書具有以下代碼,用於從鏈接列表中刪除元素。刪除鏈接列表中的值/刪除未動態分配的值
void remove(double num)
{
Node *cur, *prev;
if(!head){
return;
}
if(head->data == num)
{
cur = head;
head = head->next;
delete cur;
}
else{
cur = head;
while(cur!=NULL && cur->data != num)
{
prev = cur;
cur= cur->next;
}
if(cur)
{
prev->next = cur->next;
delete cur;
}
}
}
我對這段代碼有幾個疑問。首先,如何刪除未動態分配的值?爲什麼這是必要的?我在任何地方都看不到新的聲明。其次,爲什麼這個代碼塊是必需的?爲什麼需要在if語句中?
if(cur)
{
prev->next = cur->next;
delete cur;
}
孤立的代碼沒有意義,頭是什麼?這是一個對象的方法嗎?如果是這樣,它可能已在其他地方動態分配。而且,即使按照學術編碼的標準,這本教科書也很糟糕。未初始化的變量?讓人驚訝。 –