Node* findMid(Node* &head) { if(head == NULL||head->next == NULL) return head; Node* p = head; Node* q = head; while(q->next->next&&(q = q->next)) { p = p-> next; q = q->next; } return p; }