public class ListNode {
public int val;
public ListNode next;
public ListNode(int x) {
val = x;
next = null;
}
public static ListNode initByArray(int[] array) {
if (array == null || array.length == 0) {
return null;
}
int length = array.length;
ListNode head = new ListNode(array[0]);
ListNode cur = head;
ListNode temp = null;
for (int i = 1; i < length; i++) {
temp = new ListNode(array[i]);
cur.next = temp;
cur = temp;
}
return head;
}
@Override
public String toString() {
String s = next == null ? " " : next.toString();
return val + " " + s;
}
}
方法
public static ListNode solution(ListNode head)
{
ListNode odd = head;
ListNode even = head.next;
ListNode temp = odd;
ListNode cur = even.next;
even.next = null;
boolean flag = true;
while(cur != null)
{
ListNode next = cur.next;
if(flag)
{
temp.next = cur;
temp = cur;
cur.next = null;
}
else
{
cur.next = even;
even = cur;
}
cur = next;
flag = !flag;
}
while(odd != null)
{
ListNode node1 = odd.next;
ListNode node2 = even.next;
odd.next = even;
even.next = node1;
odd = node1;
even = node2;
}
return head;
}
public static void main(String[] args) {
ListNode head = ListNode.initByArray(new int[]{1,2,3,4,5,6,7,8,9,10});
solution(head);
System.out.println(head);
}