莫比乌斯反演 2021-12-18 08:52 采纳率: 100%
浏览 233
已结题

反转链表,给你单链表的头指针 head 和两个整数 left 和 right

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

  • 写回答

1条回答 默认 最新

  • 英雄哪里出来 2021年博客之星Top1 2021-12-18 08:54
    关注

    一、思路

    首先找到对应那一段,然后截断后作为单独的链表,进行翻转。
    再把之前的链表和那个单独链表接起来即可。

    二、源码

    struct ListNode* reverseList(struct ListNode *l) {
        struct ListNode *pre = l, *now = l->next;
        struct ListNode *head = l;
        while(now) {
            pre->next = now->next;       // (1) 将 now 从链表中剥离出来;
            now->next = head;            // (2) 将 now 插入到之前的链表头之前;
            head = now;                  // (3) 让 now 成为新的链表头;
            
            now = pre->next;             // (4) now 也前进一格;
        }
        return head;
    }
    
    
    struct ListNode* reverseBetween(struct ListNode* head, int left, int right){
        struct ListNode *now = head, *pre = NULL;
        struct ListNode *prel = NULL, *l, *r, *rnext;
        int cnt = 0;
        if(left == right) {
            return head;
        }
        while(now) {
            ++cnt;
            if(cnt == left) {
                prel = pre;
                l = now;
            }
            if(cnt == right) {
                r = now;
            }
    
            pre = now;
            now = now->next;
        }
        rnext = r->next;
        r->next = NULL;
        reverseList(l);
        l->next = rnext;
    
        if(prel) {
            prel->next = r;
        }else {
            head = r;
        }
        return head;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月18日
  • 已采纳回答 12月18日
  • 创建了问题 12月18日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵