问题描述:给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和欧树节点指的是节点编号的奇偶性,而不是节点的值的就行。请尝试使用原地算大完成,你的空间复杂度应该为O(1),时间复杂度为O(nodes),nodes为节点总数。
思路求解:定义奇链表的头指针和偶数链表的头指针,奇数链表的头指针就是该链表的头指针,而偶数链表的头指针为root.next,在定义两个指针进行不停地往下走,寻找奇数节点和偶数节点,最后将两个链表连接起来即可;
public ListNode oddOrEven(ListNode root)
{
ListNode odd=root;
ListNode even=root.next;
ListNode oddMove=root;
ListNode evenMove=root.next;
while(oddMove!=null&&evenMove!=null)
{
oddMove.next=evenMove.next;
evenMove=oddMove.next;
}
oddMove.next=null;
evenMove.next=null;
oddMove.next=even;
???????return odd;
}