编程实现:输入若干个正整数(输入-1为结束标志),建立一个单向链表,将其中的偶数值结点删除后输出。
时间: 2024-12-29 22:18:26 浏览: 6
在Python中,你可以使用`ListNode`类代表链表节点,然后编写一个函数来实现这个功能。下面是一个简单的示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def delete_even_numbers(head):
if head is None or head.val == -1:
return None
current = head
prev = None
while current is not None and current.val != -1:
if current.val % 2 != 0:
# 如果当前值是奇数,将其添加到结果链表中
if prev is not None:
prev.next = current
else:
# 如果是头节点,直接指向当前节点
new_head = current
prev = current
else:
# 如果是偶数,跳过并更新prev和current指针
current = current.next
return new_head
# 示例:
# 创建链表 [1, 2, 3, 4, 5, -1]
head = ListNode(1)
head.next = ListNode(2)
head.next.next = ListNode(3)
head.next.next.next = ListNode(4)
head.next.next.next.next = ListNode(5)
head.next.next.next.next.next = ListNode(-1)
new_head = delete_even_numbers(head)
while new_head:
print(new_head.val)
new_head = new_head.next
```
这个函数会遍历链表,当遇到一个偶数值时,它会跳过该节点。当找到一个奇数值或到达链表末尾时,它会将之前遇到的所有奇数节点连接起来作为新的链表返回。
阅读全文