【发布时间】:2018-01-13 00:08:22
【问题描述】:
我的教科书有以下用于从链表中删除元素的代码。
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;
}
【问题讨论】:
-
这段代码孤立起来没有意义,什么是head?这是对象的方法吗?如果是这样,它可能已在其他地方动态分配。此外,即使按照学术编码的标准,这本教科书也很糟糕。未初始化的变量?哎呀。
标签: c++ linked-list dynamic-memory-allocation