题目:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode oddEvenList(ListNode head) {
//维护一个奇偶双链表指针
if(head==null||head.next==null) return head;
//奇数指针
ListNode odd=head;//偶数指针的动态变化的节点
//偶数指针
ListNode even=head.next;//偶数指针的动态变化的节点
ListNode p=even;//偶数指针的头节点
while(odd.next!=null&&even.next!=null){
odd.next=even.next;
odd=odd.next;
even.next=odd.next;
even=even.next;
}
//再把奇数指针的尾节点指向偶数节点的头节点
odd.next=p;
return head;
}
}
代码结果: