LCR 026. 重排链表

LCR 026. 重排链表


题目链接:LCR 026. 重排链表

注:该题与 143. 重排链表完全一样

代码如下:

cpp 复制代码
class Solution {
public:
    void reorderList(ListNode* head)
    {
        if(head==nullptr||head->next==nullptr||head->next->next==nullptr)
            return;

        ListNode* Head=new ListNode;
        Head->next=nullptr;
        ListNode* r=head;

        //找到中间节点
        ListNode* slow=head,*fast=head,*slow_pre=nullptr;

        while(fast)
        {
            slow_pre=slow;
            slow=slow->next;
            fast=fast->next;
            if(fast)
                fast=fast->next;
        }

        slow_pre->next=nullptr;//前后链表进行断开操作

        //后半段进行逆置操作
        ListNode* afterLinkHead=new ListNode;
        afterLinkHead->next=nullptr;

        while(slow)
        {
            ListNode* temp=slow;
            slow=slow->next;

            temp->next=afterLinkHead->next;
            afterLinkHead->next=temp;
        }

        fast=head;
        slow=afterLinkHead->next;

        int count=0;
        while(fast&&slow)//轮流进行重新插入
        {
            ListNode* temp=nullptr;
            if(count%2==0)
            {
                temp=fast;
                fast=fast->next;
            }else
            {
                temp=slow;
                slow=slow->next;
            }

            temp->next=nullptr;
            r->next=temp;
            r=temp;

            count++;
        }

        while(fast)//把剩余的节点进行插入
        {
            ListNode* temp=fast;
            fast=fast->next;
            temp->next=nullptr;
            r->next=temp;
            r=temp;
        }

        while(slow)//把剩余的节点进行插入
        {
            ListNode* temp=slow;
            slow=slow->next;
            temp->next=nullptr;
            r->next=temp;
            r=temp;
        }

        head=Head->next;
    }
};
相关推荐
景彡先生5 小时前
C++并行计算:OpenMP与MPI全解析
开发语言·c++
归去_来兮7 小时前
深度学习模型在C++平台的部署
c++·深度学习·模型部署
pay4fun8 小时前
2048-控制台版本
c++·学习
YuTaoShao9 小时前
【LeetCode 热题 100】141. 环形链表——快慢指针
java·算法·leetcode·链表
hjjdebug9 小时前
ffplay6 播放器关键技术点分析 1/2
c++·ffmpeg·音视频
Azxcc011 小时前
C++异步编程入门
开发语言·c++
吐泡泡_11 小时前
C++(STL源码刨析/vector)
c++
你的冰西瓜11 小时前
C++排序算法全解析(加强版)
c++·算法·排序算法
特立独行的猫a11 小时前
11款常用C++在线编译与运行平台推荐与对比
java·开发语言·c++
笑鸿的学习笔记11 小时前
qt-C++笔记之setCentralWidget的使用
c++·笔记·qt