删除单链表所有奇数结点并返回删除结点个数
时间: 2024-01-26 22:04:13 浏览: 91
算法设计题new(1).docx
好的,我可以为您解答这个问题。以下是实现这个功能的示例代码(使用 Python 语言):
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_odd_nodes(head: ListNode) -> int:
"""
删除单链表所有奇数结点并返回删除结点个数
"""
count = 0
prev = None
curr = head
while curr is not None:
if curr.val % 2 == 1:
if prev is None:
head = curr.next
else:
prev.next = curr.next
count += 1
curr = curr.next
else:
prev = curr
curr = curr.next
return count
```
这段代码定义了一个 `ListNode` 类表示单链表中的一个结点,`delete_odd_nodes` 函数接收一个链表的头结点作为参数,返回删除的奇数结点个数。在函数中,我们使用 `prev` 和 `curr` 两个指针分别指向当前结点和前一个结点,遍历整个单链表,如果当前结点的值是奇数,则将该结点从链表中删除,并将 `count` 计数器加 1;否则,将 `prev` 和 `curr` 指针向后移动。最后,函数返回删除的结点个数。
如果您有任何问题或疑问,请随时问我。
阅读全文