C++ really simple solution using stack, with explanations
Like it? Please upvote...\n\nclass Solution {\npublic:\n    void reorderList(ListNode* head) {\n        if ((!head) || (!head->next) || (!head->next->next)) ret
**Like it? Please upvote...**\n```\nclass Solution {\npublic:\n    void reorderList(ListNode* head) {\n        if ((!head) || (!head->next) || (!head->next->next)) return; // Edge cases\n        \n        stack<ListNode*> my_stack;\n        ListNode* ptr = head;\n        int size = 0;\n        while (ptr != NULL) // Put all nodes in stack\n        {\n            my_stack.push(ptr);\n            size++;\n            ptr = ptr->next;\n        }\n        \n        ListNode* pptr = head;\n        for (int j=0; j<size/2; j++) // Between every two nodes insert the one in the top of the stack\n        {\n            ListNode *element = my_stack.top();\n            my_stack.pop();\n            element->next = pptr->next;\n            pptr->next = element;\n            pptr = pptr->next->next;\n        }\n        pptr->next = NULL;\n    }\n};\n```
['Stack', 'C']