c语言删除一个节点前的节点
时间: 2024-05-07 15:15:58 浏览: 47
要删除一个节点前的节点,需要先找到该节点的前一个节点。可以通过遍历链表来找到前一个节点,具体步骤如下:
1. 定义一个指针变量p,指向链表的头节点。
2. 遍历链表,当p指向要删除节点的前一个节点时,停止遍历。
3. 将要删除节点的前一个节点的next指针指向要删除节点的下一个节点。
4. 释放要删除的节点的内存空间。
以下是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node *next;
} Node;
void delete_node(Node **head, int value) {
Node *p = *head;
while (p->next != NULL && p->next->data != value) {
p = p->next;
}
if (p->next != NULL) {
Node *temp = p->next;
p->next = temp->next;
free(temp);
}
}
int main() {
Node *head = NULL;
Node *node1 = (Node*)malloc(sizeof(Node));
Node *node2 = (Node*)malloc(sizeof(Node));
Node *node3 = (Node*)malloc(sizeof(Node));
node1->data = 1;
node2->data = 2;
node3->data = 3;
node1->next = node2;
node2->next = node3;
node3->next = NULL;
head = node1;
delete_node(&head, 2);
Node *p = head;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
return 0;
}
```
在该例子中,delete_node函数可以删除链表中指定值的节点前的节点。在主函数中,创建了一个包含三个节点的链表,然后调用delete_node函数删除了节点值为2的节点前的节点,输出结果为1 3。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)