【发布时间】:2017-02-10 19:19:19
【问题描述】:
试图了解如何正确设置一个函数,该函数将根据用户指定的参数从链表中删除。所以我有一个名为list 的global 变量,其中包含所有dog structs。如果链表中有多个结构,我可以让列表删除用户想要删除的节点,但由于某种原因,如果只有一个节点或者我要删除的节点是列表的头部,则函数不会删除它。对此问题的任何指导将不胜感激。
void remove_one(char* name)
{
struct dog *tempList = list;
struct dog *previous = NULL;
if (tempList == NULL) {
return;
}
while (tempList != NULL) {
if (strcmpi(tempList->name, name) == 0) {
if (previous == NULL) {
tempList = tempList->next;
}
else {
previous->next = tempList->next;
free(tempList);
tempList = previous->next;
}
return;
}
else {
previous = tempList;
tempList = tempList->next;
}
}
return;
}
【问题讨论】:
标签: c linked-list structure nodes