cpp删除单链表所有奇数结点并返回删除结点个数
时间: 2024-01-26 08:04:13 浏览: 89
好的,以下是使用 C++ 实现删除单链表所有奇数结点并返回删除结点个数的示例代码:
```cpp
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
int delete_odd_nodes(ListNode* head) {
int count = 0;
ListNode* prev = nullptr;
ListNode* curr = head;
while (curr != nullptr) {
if (curr->val % 2 == 1) {
if (prev == nullptr) {
head = curr->next;
} else {
prev->next = curr->next;
}
count++;
curr = curr->next;
} else {
prev = curr;
curr = curr->next;
}
}
return count;
}
```
该代码与 Python 版本的代码基本相同,只是使用了 C++ 的语法。在函数中,我们使用 `ListNode` 结构体表示单链表的结点,`delete_odd_nodes` 函数接收一个链表的头结点指针作为参数,返回删除的奇数结点个数。我们使用 `prev` 和 `curr` 两个指针分别指向当前结点和前一个结点,遍历整个单链表,如果当前结点的值是奇数,则将该结点从链表中删除,并将 `count` 计数器加 1;否则,将 `prev` 和 `curr` 指针向后移动。最后,函数返回删除的结点个数。
希望这个示例代码能够帮助您解决问题,如果您还有任何问题,请随时问我。
阅读全文