C++程序:已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此 结点,然后删除。
时间: 2024-05-06 13:17:28 浏览: 86
试写出一个计算单链表中结点个数的算法,其中指针p指向该链表的第一个结点。
删除单向链表中的某个结点可以分为以下几个步骤:
1. 找到要删除的结点的前一个结点;
2. 将前一个结点的 next 指针指向要删除结点的下一个结点;
3. 删除要删除的结点。
下面是一个示例代码:
```c++
void deleteNode(ListNode* head, int val) {
ListNode* cur = head;
ListNode* pre = nullptr;
while (cur != nullptr && cur->val != val) {
pre = cur;
cur = cur->next;
}
if (cur == nullptr) {
return; // 没有找到要删除的结点
}
if (pre == nullptr) {
head = cur->next; // 要删除的是头结点
} else {
pre->next = cur->next;
}
delete cur; // 释放要删除的结点的内存
}
```
其中,ListNode 是链表结点的定义,包含一个 val 值和一个 next 指针指向下一个结点。该函数的参数为链表头结点 head 和要删除的结点的值 val。
阅读全文