删除链表的节点
时间: 2023-07-10 09:22:04 浏览: 54
要删除链表中的一个节点,需要先找到该节点的前一个节点,然后修改前一个节点的指针,使其指向该节点的下一个节点。如果要删除的节点是头节点,则需要特殊处理,直接将头节点指向下一个节点即可。
以下是一个 C++ 实现的例子:
```cpp
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* deleteNode(ListNode* head, int val) {
if (head == NULL) {
return NULL;
}
if (head->val == val) {
ListNode* tmp = head->next;
delete head;
return tmp;
}
ListNode* prev = head;
ListNode* cur = head->next;
while (cur != NULL && cur->val != val) {
prev = cur;
cur = cur->next;
}
if (cur != NULL) {
prev->next = cur->next;
delete cur;
}
return head;
}
```
这个函数接受一个链表的头节点和要删除的节点的值,返回删除后的链表的头节点。在函数中,我们先特判空链表和要删除的节点是头节点的情况。然后使用双指针法,找到要删除的节点的前一个节点。最后修改指针和删除节点即可。