1 #define NULL 0
2
3 class Solution {
4 public:
5 void reorderList(ListNode *head) {
6 stack<ListNode*> s;
7 ListNode* ptr1,*ptr2,*tmp;
8 if(head != NULL && head->next != NULL && head->next->next != NULL)
9 {
10 ptr1 = head;
11 ptr2 = head;
12 while(ptr2->next != NULL && ptr2->next->next != NULL)
13 {
14 ptr1 = ptr1->next;
15 ptr2 = ptr2->next->next;
16 }
17 tmp = ptr1;
18 ptr1 = ptr1->next;
19 tmp->next = NULL;
20 ptr2 = head;
21 while(ptr1 != NULL)
22 {
23 s.push(ptr1);
24 ptr1 = ptr1->next;
25 }
26 while(s.size())
27 {
28 tmp = ptr2->next;
29 ListNode* top;
30 top = s.top();
31 s.pop();
32 ptr2->next = top;
33 top->next = tmp;
34 ptr2 = ptr2->next->next;
35 }
36 }
37
38 }
39 };