这是我删除具有参数中传递的值的所有节点的代码。
typedef struct nodetype
{
int data;
struct nodetype * next;
} node;
typedef node * list;
void Linklist::deleteNode(list * head, int value)
{
list current = *head;
list previous = *head;
while(current != NULL)
{
if(current->data != value)
{
previous = current;
current = current->next;
}
else if (current->data == value)
{
previous->next = current->next;
delete current;
current = previous->next;
}
}
}
但是在这里,如果链接列表中的所有元素都是 2,那么它应该删除链接列表中的所有元素,最后 head 也应该变为 NULL,这样如果我通过这个 head 来计算列表中的节点数,它应该说列表为空等类似操作。
根据我目前的实现,对于上述情况,头部不会变为 NULL。
请提出修改建议,如果链接列表的所有节点在函数参数中传递的值相同,则 head 应变为 NULL。