C++ || Stack || easy-understanding
Its really easy to understand , we first use tortoise-hare method to reach at the mid and end element then push last half linked list into stack and then insert
Its really easy to understand , we first use **tortoise-hare** method to reach at the mid and end element then push last half linked list into stack and then insert its top element in between the the first half  linked list.\n```\nclass Solution {\npublic:\n    void reorderList(ListNode* head) {\n        if(head == NULL || head->next == NULL || head->next->next == NULL) return ;\n        ListNode* slow= head;\n        ListNode* fast= head;\n        stack<ListNode*> st;\n        while( fast!=NULL && fast->next!=NULL){\n            slow= slow->next;\n            fast = fast->next->next;\n        }\n        ListNode* n;\n        \n        if(fast!=NULL){\n            n= slow->next;\n            \n        }\n        else n= slow;\n        \n        while(n!=NULL){\n           st.push(n);\n            n= n->next;\n            \n        }\n        fast= head;\n        \n        while(st.size()){\n          \n        n = fast->next; \n            fast->next= st.top();\n            st.top()->next =n;\n            fast=n;\n                st.pop();\n            \n        }\n       slow->next= NULL;\n        \n        \n    }\n};\n\n\n```
['Linked List', 'Stack', 'Recursion', 'C', 'C++']