数据结构单链表的删除代码
时间: 2023-10-10 09:08:02 浏览: 55
单链表的删除操作通常需要注意以下几个方面:
1. 找到要删除的节点;
2. 修改前驱节点的指针,使其指向后继节点;
3. 释放要删除的节点的内存空间。
以下是单链表删除节点的代码示例(假设节点数据类型为 int):
```c++
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
void deleteNode(ListNode* head, int val) {
ListNode* prev = NULL; // 前驱节点指针
ListNode* curr = head; // 当前节点指针
while (curr != NULL && curr->val != val) {
prev = curr;
curr = curr->next;
}
if (curr == NULL) { // 要删除的节点不存在
return;
}
if (prev == NULL) { // 要删除的节点是头节点
head = curr->next;
} else { // 要删除的节点是中间或尾节点
prev->next = curr->next;
}
delete curr; // 释放内存空间
}
```
在上述代码中,我们使用了两个指针 `prev` 和 `curr`,分别指向要删除节点的前驱节点和当前节点,然后在链表中遍历查找要删除的节点。如果要删除的节点不存在,则直接返回。如果要删除的节点是头节点,则修改头指针 `head` 为要删除节点的后继节点;如果要删除的节点是中间或尾节点,则修改前驱节点的指针,使其指向要删除节点的后继节点。最后,释放要删除节点的内存空间。