#includestruct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(nullptr) { } }; class Solution { public: //以head为起点,反转链表,并返回头节点 ListNode *ReverseList(ListNode *pHead) { if (pHead == nullptr || pHead->next == nullptr) { return nullptr; } ListNode *last = ReverseList(pHead->next); pHead->next->next = pHead; pHead->next = pHead; return last; } };
#反转链表的前N个结点
#include反转链表的一部分struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(nullptr) { } }; class Solution { public: ListNode *rearNode = nullptr; ListNode *ReverseListN(ListNode *pHead, int n) { //记录n+1结点 if (n == 1) { rearNode = pHead->next; return pHead; } ListNode *last = ReverseListN(pHead->next, n - 1); pHead->next->next = pHead; pHead->next = rearNode; return last; } };
#includestruct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x), next(next) {} }; class Solution { public: ListNode *rearNode = nullptr; ListNode *ReverseListN(ListNode *pHead, int n) { if (n == 1) { rearNode = pHead->next; return pHead; } ListNode *last = ReverseListN(pHead->next, n - 1); pHead->next->next = pHead; pHead->next = rearNode; return last; } ListNode *reverseBetween(ListNode *head, int left, int right) { if (left == 1) { return ReverseListN(head, right); } head->next = reverseBetween(head->next, left - 1, right - 1); return head; } };



