思路:
1 小于3个元素的,直接返回原有head
2 大于等于3个元素的
while循环{
2.1 建立odd 链表
2.2 建立even链表
}
odd链表尾部指针指向even链表的头部
3 返回head
代码如下:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode oddEvenList(ListNode head) { if(head == null || head.next == null) {//元素个数<3,直接返回头 return head; } ListNode even = head.next, odd = head, evenHead = head.next; while(even != null && even.next != null) { //元素个数>=3&&循环能继续(even.next有值) odd.next = even.next; //odd元素指针指向even的下一个元素 odd = odd.next; //odd指针后移 even.next = odd.next; //even元素指向odd的下一个元素 even = even.next; //even指针后移 } odd.next = evenHead;//对接odd尾和even的头 return head; } }