ListNode* reverseSecondHalf(ListNode * list){
    if(list == NULL || list->next == NULL) return list;
    ListNode* fast = list;
    ListNode* slow = list;
    while(fast->next != NULL && fast->next->next != NULL){
        fast = fast->next->ext;
        slow = slow->next;
    }
    slow->next = reverse(slow->next);
    return list;


}
ListNode* reverse(ListNode * l){
    ListNode* prev = NULL;
    while(l){
        ListNode* temp = l->next;
        l->next = prev;
        prev = l;
        l = temp;
    }
    return prev;

}

results matching ""

    No results matching ""