leetcode328 Odd Even Linked List

 1 """
 2 Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in the nodes.
 3 
 4 You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
 5 
 6 Example 1:
 7 
 8 Input: 1->2->3->4->5->NULL
 9 Output: 1->3->5->2->4->NULL
10 
11 Example 2:
12 
13 Input: 2->1->3->5->6->4->7->NULL
14 Output: 2->3->6->7->1->5->4->NULL
15 
16 """
17 
18 class ListNode:
19     def __init__(self, x):
20         self.val = x
21         self.next = None
22 class Solution(object):
23     def oddEvenList(self, head):
24         if head == None or head.next == None:  #头结点限定条件
25             return head
26 
27         odd = head
28         even = head.next
29         t = even   #!!!记录偶数结点的起始位置
30         while even != None and even.next != None:
31             #!!!遍历结点,保持奇数偶数结点的相对位置
32             odd.next = even.next  #连接奇数结点
33             odd = odd.next        #调整位置
34             even.next = odd.next  #连接偶数结点
35             even = even.next      #调整位置
36         odd.next = t              #整合链表
37         return head
38 
39 """
40 注意题意,
41 这里的奇数节点和偶数节点指的是节点编号的奇偶性,
42 而不是节点的值的奇偶性。
43 此类题只需要遍历一遍链表,需要两个指针来进行操作
44 如previous,current(leetcode83)
45 传送门https://blog.csdn.net/qq_17550379/article/details/80654239
46 """
原文地址:https://www.cnblogs.com/yawenw/p/12250401.html