用C语言写单链表的删除
时间: 2023-08-20 15:05:04 浏览: 89
C语言链表,写入删除
单链表的删除分为两种情况:删除头节点和删除非头节点。
删除头节点的代码如下:
```c
// 定义单链表结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 删除头节点
ListNode* deleteHeadNode(ListNode* head) {
if (head == NULL) {
return NULL;
}
ListNode* p = head->next;
free(head);
return p;
}
```
删除非头节点的代码如下:
```c
// 删除非头节点
void deleteNode(ListNode* node) {
if (node == NULL || node->next == NULL) {
return;
}
ListNode* next = node->next;
node->val = next->val;
node->next = next->next;
free(next);
}
```
需要注意的是,在删除非头节点时,需要将当前节点的下一个节点的值赋给当前节点,并将当前节点的 next 指针指向下一个节点的 next 指针,然后才能删除下一个节点。
阅读全文