单向链表之删除节点
2024.02.19 02:26浏览量:7简介:介绍如何在单向链表中删除指定节点,并给出C语言实现代码。
在单向链表中删除指定节点需要遵循以下步骤:
- 找到要删除的节点的前一个节点,记为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指针指向当前节点的下一个节点,从而实现逻辑上的删除。最后,我们释放要删除的节点的内存空间。
需要注意的是,在实际应用中,我们还需要考虑一些边界条件和错误处理情况,比如链表为空、要删除的节点不存在等。此外,为了避免内存泄漏,我们需要确保在删除节点后释放其内存空间。

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