标签:des style color io ar java for sp div
Given a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes‘ values.
For example,
Given {1,2,3,4}, reorder it to {1,4,2,3}.
/**
* Definition for singly-linked list.
* class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode reverse(ListNode head)
{
if (head == null || head.next == null)
{
return head;
}
ListNode i = head;
ListNode j = i.next;
ListNode k = j.next;
head.next = null;
for (; k != null; i = j, j = k, k = k.next)
{
j.next = i;
}
j.next = i;
return j;
}
public void reorderList(ListNode head)
{
if (head == null || head.next == null || head.next.next == null)
{
return;
}
int LEN = 0;
ListNode p;
ListNode first = null;
ListNode second = null;
ListNode pFirst = null;
ListNode pSecond = null;
for (p = head; p != null; p = p.next)
{
LEN++ ;
}
LEN = LEN / 2;
for (p = head; LEN > 1; LEN-- )
{
p = p.next;
}
second = reverse(p.next);
p.next = null;
for (first = head; first != null && second != null; first = pFirst, second = pSecond)
{
pFirst = first.next;
pSecond = second.next;
first.next = second;
if (pFirst != null)
{
second.next = pFirst;
}
}
}
}
标签:des style color io ar java for sp div
原文地址:http://blog.csdn.net/jiewuyou/article/details/39694259