c语言单链表删除所有值为x的元素
时间: 2024-10-13 09:16:45 浏览: 35
在C语言中,删除单链表中所有值为`x`的元素,需要遍历整个链表并判断每个节点的值是否等于`x`。如果等于,则删除当前节点。以下是基本步骤:
1. 定义一个函数,比如`deleteAllXs`,接受链表头指针作为参数。
2. 创建两个指针,一个指向当前节点`current`,另一个用于保存下一个节点的地址`nextNode`。
3. 当`current`的值等于`x`并且不是第一个节点时,执行删除操作:
a. 将前一个节点的`next`指针设置为`current->next`,即跳过当前节点。
b. `current`指针继续向前移动到下一个节点。
4. 循环直到`current`变为NULL,表示链表已遍历完。
这是一个伪代码示例:
```c
typedef struct Node {
int data;
struct Node* next;
} Node;
void deleteAllXs(Node** head, int x) {
if (*head == NULL) return; // 空链表无需处理
Node* current = *head;
Node* prev = NULL;
while (current != NULL) {
if (current->data == x) {
if (prev == NULL) { // 如果是第一个节点
*head = current->next;
} else {
prev->next = current->next;
}
Node* temp = current;
current = current->next;
free(temp); // 释放内存
} else {
prev = current;
current = current->next;
}
}
}
```
阅读全文