用c语言删除链表中的元素
时间: 2024-05-11 08:14:33 浏览: 6
假设链表节点的结构体定义如下:
```
struct ListNode {
int val;
struct ListNode *next;
};
```
删除链表中指定元素的代码如下:
```
struct ListNode* removeElements(struct ListNode* head, int val) {
struct ListNode *p = head, *prev = NULL;
while (p != NULL) {
if (p->val == val) {
if (prev == NULL) {
head = p->next;
} else {
prev->next = p->next;
}
struct ListNode *tmp = p;
p = p->next;
free(tmp);
} else {
prev = p;
p = p->next;
}
}
return head;
}
```
该函数的参数为链表头节点和待删除的元素值,返回删除后的链表头节点。在函数中,使用两个指针p和prev分别指向当前节点和前一个节点,遍历链表,若节点的值等于待删除元素值,则将该节点从链表中删除,同时释放内存;否则向后继续遍历。注意,若待删除元素在链表头部,则需更新头节点。