给定一个单链表请设定一个函数将链表的偶数节点分别放在一起 重新排列后输出注意是接点的编号而不是数值 代码
时间: 2024-10-24 12:15:27 浏览: 26
yuesefu.rar_创建一个循环链表_按指定位置删除_循环单链表_约瑟夫环
在Python中,我们可以创建一个函数来实现这个功能。首先,我们需要定义链表节点的结构,然后遍历链表,将偶数节点和奇数节点分开,并维护两个新的链表。最后,我们连接这两个链表并返回结果。
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def separate_even_odd(head):
# 初始化偶数节点头和奇数节点头
even_head = ListNode(0)
odd_head = ListNode(0)
current = head
while current is not None:
# 如果当前节点是偶数,添加到偶数链表
if current.val % 2 == 0:
even_head.next = current
even_head = even_head.next
else:
# 否则是奇数,添加到奇数链表
odd_head.next = current
odd_head = odd_head.next
current = current.next
# 连接两个链表
even_head.next = odd_head.next
return even_head.next
# 示例链表
# 1 -> 2 -> 3 -> 4 -> 5
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)
# 将链表的偶数节点放在前面,奇数节点放在后面
new_head = separate_even_odd(head)
current = new_head
while current is not None:
print(current.val) # 输出节点编号
current = current.next
阅读全文