奇偶链表
给一个链表:
1-> 2-> 3-> 4-> 5
将奇数位置的节点拼成新链表
偶数位置的节点拼成新链表
偶数链表接到奇数链表后
*第一个位置是1不是0
思路:
让odd 节点的下一个链接到 odd.next.next, 将指针指到odd.next
even节点同理
注意要先保存even节点的第一个节点,因为最后需要把first even接到last odd节点上
class Node:
def __init__(self, x):
self.val = x
self.next = None
def change(phead):
if phead == None:
return
elif phead.next == None:
return phead
else:
odd = phead
even = phead.next
first_even = phead.next
while even != None and even.next != None:
odd.next = odd.next.next
odd = odd.next
even.next = even.next.next
even = even.next
odd.next = first_even
return phead
测试:
node1 = Node(1)
node2 = Node(2)
node3 = Node(3)
node4 = Node(4)
node5 = Node(5)
node1.next = node2
node2.next = node3
node3.next = node4
node4.next = node5
new = change(node1)
new.next.next.next.val
2