Python中的奇偶链表
假设我们有一个单链表,我们必须将所有奇数节点和偶数节点分组在一起。在这里,我们谈论的是节点位置而不是节点中的值。我们应该设法做到这一点。因此,如果节点为[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, ]