C语言 链表删除节点操作
时间: 2023-11-23 08:48:11 浏览: 159
链表删除节点操作可以分为两种情况:删除头节点和删除非头节点。
1. 删除头节点:
首先,我们需要保存头节点的下一个节点作为新的头节点。然后,释放原来的头节点,即可完成删除操作。
示例代码如下:
```c
void deleteNode(struct Node** head_ref) {
if (*head_ref == NULL) {
return;
}
struct Node* temp = *head_ref;
*head_ref = temp->next;
free(temp);
}
```
2. 删除非头节点:
首先,我们需要找到待删除节点的前一个节点。然后,将前一个节点的next指针指向待删除节点的下一个节点,并释放待删除节点即可。
示例代码如下:
```c
void deleteNode(struct Node** head_ref, int key) {
struct Node *temp = *head_ref, *prev;
if (temp != NULL && temp->data == key) {
*head_ref = temp->next;
free(temp);
return;
}
while (temp != NULL && temp->data != key) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
return;
}
prev->next = temp->next;
free(temp);
}
```
阅读全文