题解

按照左右半区的方式重新组合单链表

http://www.nowcoder.com/questionTerminal/a7a348bdb4634e228cf7704c8a2a8bda

list_node * relocate(list_node * head)
{
    //////在下面完成代码
    if(head == nullptr || head->next == nullptr) return head;
    list_node* slow = head;
    list_node* fast = head;
    while(fast->next != nullptr && fast->next->next != nullptr) {
        slow = slow->next;
        fast = fast->next->next;
    }
    if(fast->next == nullptr) ;
    else if(fast->next->next == nullptr) slow = slow->next;
    fast = head;
    while(fast->next != slow) fast = fast->next;
    fast->next = nullptr;
    fast = head;
    while(fast != nullptr) {
        list_node* tmp = slow;
        slow = slow->next;
        tmp->next = fast->next;
        fast->next = tmp;
        fast = tmp->next;
        if(fast == nullptr && slow != nullptr)
            tmp->next = slow;
    }
    return head;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-27 20:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务