设计一个递归算法删除不带头节点的单链表L中所有值为x的节点用c语言
时间: 2024-05-05 07:20:37 浏览: 14
以下是一个简单的递归算法,用于删除单链表L中所有值为x的节点:
```c
void deleteNode(struct Node* current, int x) {
if (current == NULL)
return;
if (current->data == x) {
struct Node* temp = current;
current = current->next;
free(temp);
deleteNode(current, x);
}
else {
deleteNode(current->next, x);
}
}
```
这个函数接受两个参数:指向链表中当前节点的指针和要删除的值x。如果当前节点的值等于x,则删除该节点,并递归地调用deleteNode函数以删除剩余的值为x的节点。如果当前节点的值不等于x,则递归地调用deleteNode函数以处理下一个节点。注意,这个函数并没有处理链表头节点的情况,因此需要在调用该函数之前确保链表不为空。