解题思路

相关代码
/**
* 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 void reorderList(ListNode head) {
Stack<Integer> stack = new Stack<>();
ListNode t1 = head;
while(t1!=null){
stack.push(t1.val);
t1=t1.next;
}
//奇不动,偶动。
int length = stack.size();
ListNode H = new ListNode(-11);
ListNode p1 = head;
ListNode p2 = H;
for(int i=1;i<=length;i++){
if(i%2==1){
ListNode temp1 = new ListNode(p1.val);
p2.next = temp1;
p2=p2.next;
}
else{
ListNode temp2 = new ListNode(stack.pop());
p2.next = temp2;
p2=p2.next;
p1=p1.next;
}
}
ListNode f1 = head;
ListNode f2 = H.next;
while(f1!=null){
f1.val = f2.val;
f1=f1.next;
f2=f2.next;
}
}
}