EXTREMELY EASY C++ SOLUTION WITH EXPLANATION
Maintain a slow and a fast pointer. Slow moves one place at a time while fast moves two places at a time. When fast pointer reaches end of the linked list, at t
Maintain a slow and a fast pointer. Slow moves one place at a time while fast moves two places at a time. When fast pointer reaches end of the linked list, at that time slow pointer is the middle element.\n```\n\n  ListNode* middleNode(ListNode* head) {\n        if(head==NULL|| head->next==NULL)\n            return head;\n        ListNode* slow=head;\n        ListNode* fast =head;\n        while(fast!=NULL&& fast->next!=NULL){\n            fast=fast->next->next;\n            slow=slow->next;\n        }\n       \n        return slow;\n    }\n```
[]