C语言中如何删除双链表中的偶数,写出相关代码
时间: 2024-10-01 19:12:12 浏览: 27
c语言经典案例
在C语言中,删除双链表中的所有偶数节点通常需要遍历链表并检查每个节点的值。如果值是偶数,则删除该节点。以下是删除双链表中偶数节点的一个基本示例,这里假设链表节点结构如下:
```c
typedef struct ListNode {
int val; // 节点值
struct ListNode* next; // 指向下一个节点的指针
} ListNode;
```
首先,我们需要编写一个函数来删除节点:
```c
void deleteEvenNodes(ListNode** head) {
ListNode* current = *head;
ListNode* prev = NULL;
while (current != NULL) {
if (current->val % 2 == 0) { // 如果当前节点值是偶数
if (prev == NULL) { // 如果是头节点
*head = current->next;
} else {
prev->next = current->next; // 将前一个节点的next指向下一个节点
}
free(current); // 释放当前节点内存
} else {
prev = current; // 非偶数节点,更新prev为当前节点
}
current = current->next; // 移动到下一个节点
}
}
```
在这个函数中,我们使用了两个指针`current`和`prev`,`prev`用于保存当前节点的前一个节点,以便于修改链接。
请注意,在实际应用中,你需要确保对链表的头部、尾部以及中间部分的操作都是正确的,并且考虑链表为空的情况。
阅读全文