首页 文章资讯内容详情

Python中的奇偶链表

2026-06-04 1 花语

假设我们有一个单链表,我们必须将所有奇数节点和偶数节点分组在一起。在这里,我们谈论的是节点位置而不是节点中的值。我们应该设法做到这一点。因此,如果节点为[1,22,13,14,25],则结果将为[1,13,25,22,14]

为了解决这个问题,我们将遵循以下步骤-

如果head为null或head的下一个为null,则返回head

head1:=头部,head2:=头部的下一个,head_beg:=头部的下一个

而head2的next也不为null,而next的next(head的下一个也不为null)

head1的下一个:=head2的下一个

head2的下一个=head的下一个

head1:=head1的下一个和head2:=head2的下一个

如果head2的next不为null

head1的下一个:=head2的下一个

head1:=head1的下一个

head1的下一个:=head2_beg,head2的下一个=null

回头

让我们看下面的实现以更好地理解-

示例

class ListNode: def __init__(self, data, next = None): self.val = data self.next = next def make_list(elements): head = ListNode(elements[0]) for element in elements[1:]: ptr = head while ptr.next: ptr = ptr.next ptr.next = ListNode(element) return head def print_list(head): ptr = head print([, end = "") while ptr: print(ptr.val, end = ", ") ptr = ptr.next print(]) class Solution(object): def oddEvenList(self, head): if head == None or head.next ==None: return head head1=head head2,head2_beg= head.next,head.next while head2.next!= None and head2.next.next!= None: head1.next = head2.next head2.next = head2.next.next head1 = head1.next head2 = head2.next if head2.next!=None: head1.next = head2.next head1 = head1.next head1.next = head2_beg head2.next = None return head ob1 = Solution() head = make_list([1,22,13,14,25]) print_list(ob1.oddEvenList(head))

输入项

[1,22,13,14,25]

输出结果

[1, 13, 25, 22, 14, ]