链表的奇偶位重排
拟人算法系列文章,以容易理解的方式描述算法,点赞收藏不迷路
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def oddEvenList(self, head):
index = 1
dummy1 = ListNode(-1)
dummy2 = ListNode(-1)
cur1 = dummy1
cur2 = dummy2
while head:
# 分别挂载在不同的链表上即可
if index % 2 == 1:
cur1.next = head
cur1 = cur1.next
else:
cur2.next = head
cur2 = cur2.next
index += 1
head = head.next
# 偶链表的next节点赋值null,奇链表的末尾链接偶链表的头
cur2.next = None
cur1.next = dummy2.next
return dummy1.next
if __name__ == '__main__':
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)
s = Solution()
new_head = s.oddEvenList(head)
while new_head:
print(new_head.val, end=' ')
new_head = new_head.next
# 1 3 5 2 4