8道链表常考题-链表逆序

单链表的基本操作

在这里插入图片描述

在这里插入图片描述

链表逆序1

已知链表头节点指针head,将链表逆序。(不可申请额外空间)
在这里插入图片描述

迭代法:头插到新链表中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复杂度分析

  • 时间复杂度:O(n),假设 n 是列表的长度,时间复杂度是 O(n)。
  • 空间复杂度:O(1)。

在这里插入图片描述

递归法:

在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head == NULL || head->next == NULL) return head;
        ListNode * p = reverseList(head->next);
        head->next->next = head;
        head->next = NULL;
        return p;
    }
};

链表逆序2

已知链表头节点指针head,将链表从位置m到n逆序(不申请额外空间)。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 酷酷鲨 设计师:CSDN官方博客 返回首页