思路:通过指针,将奇偶节点分开,创建奇节点链和偶节点链,最后再连起来。
代码:
/**
* 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 J = head;//奇节点链头节点
ListNode O = head.next;//偶节点链头节点
ListNode p = J;//奇节点链尾节点
ListNode q = O;//偶节点链尾节点
while (q != null && q.next != null) {
p.next = p.next.next;
p = p.next;
q.next = q.next.next;
q = q.next;
}
p.next = O;
return J;
}
}