单向链表之删除节点
2024.02.18 18:26浏览量:4简介:介绍如何在单向链表中删除指定节点,并给出C语言实现代码。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
在单向链表中删除指定节点需要遵循以下步骤:
- 找到要删除的节点的前一个节点,记为pre。
- 将pre的next指针指向要删除的节点的下一个节点,实现逻辑上的删除。
- 释放要删除的节点的内存空间。
下面是一个简单的C语言实现代码:
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
struct ListNode {
int val;
struct ListNode *next;
};
// 删除指定值的节点
void deleteNode(struct ListNode *head, int val) {
struct ListNode *pre = NULL;
struct ListNode *cur = head;
while (cur != NULL && cur->val != val) {
pre = cur;
cur = cur->next;
}
if (cur == NULL) return; // 没有找到要删除的节点
if (pre == NULL) { // 要删除的节点是头节点
head = head->next;
} else { // 要删除的节点不是头节点
pre->next = cur->next;
}
free(cur); // 释放内存空间
}
这段代码中,我们定义了一个名为deleteNode
的函数,该函数接受一个链表头指针head
和一个整数值val
作为参数,用于删除链表中值为val
的节点。在函数中,我们首先定义了两个指针pre
和cur
,分别指向当前节点的前一个节点和当前节点。然后,我们使用一个循环来遍历链表,找到值为val
的节点。如果找到了该节点,我们判断它是否是头节点,如果是头节点,则将头指针指向下一个节点;如果不是头节点,则将前一个节点的next
指针指向当前节点的下一个节点,从而实现逻辑上的删除。最后,我们释放要删除的节点的内存空间。
需要注意的是,在实际应用中,我们还需要考虑一些边界条件和错误处理情况,比如链表为空、要删除的节点不存在等。此外,为了避免内存泄漏,我们需要确保在删除节点后释放其内存空间。

发表评论
登录后可评论,请前往 登录 或 注册