【发布时间】:2017-01-02 17:16:59
【问题描述】:
我需要在传递值时删除一个甜点节点。我搜索链表,出现匹配,删除节点并返回 true。如果未找到值,则返回 false。
bool LinkedList::delNode(string flavor)
{
Dessert *pointer1 = head;
Dessert *ptrT;
while (pointer1 != NULL) {
if (pointer1->flavor != flavor) {
ptrT = pointer1;
pointer1 = pointer1->next;
} else {
ptrT->next = pointer1->next;
delete pointer1;
return true;
// Should I add a break here ?
}
else if(pointer1->next == NULL) { return false; }
}
}
我不完全确定这里的编码是否对所有可能的节点位置都有意义。
【问题讨论】:
-
既然你问了,老实说,我可能会do this instead。不那么繁琐且容易出错(例如缺少
return值)。无论如何,不需要最后的 else-if,但是您缺少 return 语句。如果循环耗尽并且pointer1达到 NULL,会发生什么情况。或者当你发送一个空列表(空头指针)时会发生什么?
标签: c++ linked-list