C++ 链表中删除元素的正确方法:避免 `delete` 关键字冲突
C++ 链表中删除元素的正确方法:避免 'delete' 关键字冲突
'delete(&head, 2); // 删除元素 delete(&head, 10); // 不存在的元素'
这两行代码都提示表达式必须是指向完整对象类型的指针内容:抱歉给你带来困扰。这是因为'delete'是C++中的关键字,所以在代码中使用'delete'作为函数名会引起冲突。为了解决这个问题,你可以将函数名改为其他名称,比如'deleteNode'。下面是更新后的代码示例:
// 从有序链表删除元素
void deleteNode(struct Node** head, int value) {
if (*head == NULL) {
printf("链表为空,无法删除元素。\n");
return;
}
struct Node* current = *head;
struct Node* prev = NULL;
// 头节点即为要删除的元素
if (current != NULL && current->data == value) {
*head = current->next;
free(current);
return;
}
// 查找要删除的元素
while (current != NULL && current->data != value) {
prev = current;
current = current->next;
}
if (current == NULL) {
printf("链表中不存在要删除的元素。\n");
return;
}
prev->next = current->next;
free(current);
}
然后,你可以使用'deleteNode'函数来删除元素,像这样:
deleteNode(&head, 2); // 删除元素
deleteNode(&head, 10); // 不存在的元素
这样就可以避免与C++关键字冲突的问题。如果还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/lKJ 著作权归作者所有。请勿转载和采集!