c++链表删除节点完整代码
时间: 2024-10-18 08:01:21 浏览: 58
在 C++ 中,链表删除节点通常涉及遍历链表找到待删除节点,并调整前后节点的指针。下面是一个简单的单向链表中删除指定节点的示例代码:
```cpp
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(NULL) {} // 构造函数
};
// 删除链表中特定值的节点
ListNode* deleteNode(ListNode* head, int val) {
if (head == nullptr) return nullptr; // 如果链表为空,直接返回
// 遍历链表,如果当前节点就是要删除的节点,则更新前一个节点的next指向下一个节点
ListNode* current = head;
while (current != nullptr && current->val != val) {
current = current->next;
}
// 如果找到了要删除的节点,处理两个情况:当前节点不是头节点,或者它是头节点
if (current != nullptr) {
if (current->next != nullptr) { // 当前节点不是头节点
current->next = current->next->next;
} else { // 当前节点是头节点
head = current->next;
}
// 释放当前节点内存
delete current;
}
return head;
}
// 测试删除节点功能
int main() {
ListNode* list = new ListNode(1);
list->next = new ListNode(2);
list->next->next = new ListNode(3);
ListNode* afterDelete = deleteNode(list, 2);
while (afterDelete != nullptr) {
std::cout << afterDelete->val << " ";
afterDelete = afterDelete->next;
}
return 0;
}
```
阅读全文