在单链表中删除p节点(非尾节点)的之后的一个节点 用cpp
时间: 2024-10-18 19:17:53 浏览: 32
删除单链表的倒数第n个节点.cpp
在C++中,删除单链表中给定节点 `p` 后面的节点通常涉及以下几个步骤:
1. 首先,检查 `p` 是否为空,如果为空则说明链表头节点就是需要删除的那个节点,此时返回空或特殊处理。
2. 确保 `p` 不是最后一个节点,即 `p->next` 不为空。然后,将 `p` 的 `next` 指针指向 `p->next->next`,这样就跳过了 `p` 节点后面的节点,使其前驱节点成为新的直接链接。
3. 如果 `p->next` 本身就是要删除的节点(即链表长度小于 3),那么 `p->next` 就会被设置为 NULL,因为已经通过 `p->next->next` 引向了下一位有效节点。
下面是一个简化的示例代码片段:
```cpp
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
void deleteNodeAfter(ListNode* &p) {
if (p == nullptr || p->next == nullptr) {
// 如果 p 或者 p->next 为空,不做任何操作
return;
}
p->next = p->next->next; // 删除 p 节点后的节点
}
```
阅读全文