92. 反转链表 II - 力扣(LeetCode)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表
206. 反转链表 - 力扣(LeetCode)
next = cur->nextcur->next = prepre = curcur = next
反转结束后,从原来的链表上看:
- pre 指向反转这一段的末尾
- cur 指向反转这一段后续的下一个节点
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* pre = NULL;ListNode* cur = head;while(cur) {ListNode* next=cur->next;cur->next = pre;pre=cur;cur=next;}return pre;}
};
class Solution {
public:ListNode* reverseBetween(ListNode* head, int left, int right) {ListNode* dummy = new ListNode;dummy->next = head;ListNode* p0 = dummy;for(int i=1;i<=left-1;i++) {p0=p0->next;}ListNode* pre=NULL;ListNode* cur=p0->next;for(int i=1;i<=(right-left+1);i++) {ListNode* next=cur->next;cur->next=pre;pre=cur;cur=next;}p0->next->next=cur;p0->next=pre;return dummy->next;}
};
往期文章:
leetCode 206.反转链表 图解-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134317963?spm=1001.2014.3001.5501