删除链表结点详解C语言
时间: 2023-08-15 19:36:30 浏览: 132
C实现删除链表中指定结点
3星 · 编辑精心推荐
删除链表节点的过程需要分为以下几个步骤:
1. 找到要删除的节点。
2. 将要删除节点的前驱节点指向要删除节点的后继节点。
3. 释放要删除的节点的内存空间。
下面是一段示例代码,可以实现删除链表中值为x的节点:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
ListNode* deleteNode(ListNode* head, int val) {
ListNode *pre = head, *cur = head->next;
if (head->val == val) {
free(head);
return cur;
}
while (cur != NULL && cur->val != val) {
pre = cur;
cur = cur->next;
}
if (cur != NULL) {
pre->next = cur->next;
free(cur);
}
return head;
}
```
在这个代码中,我们首先判断头节点是否就是要删除的节点,如果是,则直接释放头节点,并返回头节点的后继节点。如果不是,则遍历链表,寻找要删除的节点,并将其前驱节点指向其后继节点,最后释放要删除的节点的内存空间。
阅读全文