review C 语言重大bug
如果遇上使用while使用指针作为判断循环条件的话,在循环中如果有将指针删除的行为,重新创建的话地址会发生改变,此时我们就需要一个可以直接删除节点以及数据但不需要删除对应指针的函数,
void deleteNodeWithData(Node** head, Node* nodeToDelete) {
if (nodeToDelete == NULL || *head == NULL) {
return;
}
if (*head == nodeToDelete) {
*head = nodeToDelete->next;
} else {
Node* current = *head;
while (current != NULL && current->next != nodeToDelete) {
current = current->next;
}
if (current != NULL) {
current->next = nodeToDelete->next;
}
}
free(nodeToDelete);
}
原理是什么我倒是还没弄清楚,知道的评论区告诉我一下