代码语言:javascript复制给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->5->2->4->NULL 示例 2: 输入: 2->1->3->5->6->4->7->NULL 输出: 2->3->6->7->1->5->4->NULL
class Solution {
public ListNode oddEvenList(ListNode head) {
if(head==null){
return head;
}
/**
使用亚节点
定义3个节点 ouHead jiHead ouTail jiTail
如果当前是奇数jiTail.next=当前值 否则 ouTail.next=当前值
遍历完成
ouTail.next=null
jiTail.next=jiHead.next
*/
ListNode ouHead=new ListNode(0);
ListNode ouTail=ouHead;
ListNode jiHead=new ListNode(0);
ListNode jiTail=jiHead;
boolean isJi=true;//记录是否是奇数
while(head!=null){
if(isJi){
jiTail.next=head;
jiTail=jiTail.next;
}else{
ouTail.next=head;
ouTail=ouTail.next;
}
isJi=!isJi;
head=head.next;
}
ouTail.next=null;
jiTail.next=ouHead.next;
return jiHead.next;
}
}