Optimal Single Traversal Code.
unknown
plain_text
3 years ago
881 B
4
Indexable
ListNode* reverse(ListNode* head, ListNode* prev) { if (head == NULL) return NULL; ListNode* temp; ListNode* curr = head; // Reversing nodes until curr node's value // turn odd or Linked list is fully traversed while (curr != NULL && curr->val % 2 == 0) { temp = curr->next; curr->next = prev; prev = curr; curr = temp; } // If elements were reversed then head // pointer needs to be changed if (curr != head) { head->next = curr; // Recur for the remaining linked list curr = reverse(curr, NULL); return prev; } // Simply iterate over the odd value nodes head->next = reverse(head->next, head); return head; } ListNode * reverseEvenElements(ListNode *head) { return reverse(head, NULL); }
Editor is loading...