一、题目描述
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明:
- 1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1->2->3->4->5->NULL, m = 2, n = 4
输出: 1->4->3->2->5->NULL
二、思路分析
局部反转链表是反转链表的升级版。
反转链表
反转链表,就是把每个结点 next 指针的指向给反过来就行了
需要用到三个指针,它们分别指向目标结点(cur)、目标结点的前驱结点(pre)、目标结点的后继结点(next)。
cur.next = pre:进行反转 。
next用于指向 cur 原本的后继结点,用于定位下一个结点。
局部反转链表
局部反转需要额外注意的是,链表区间反转完之后,将其拼接上原链表的操作。
用leftHead指向整个 反转区间链表的前驱结点
start 指向反转区间的第一个结点,也是反转后的最后一个结点
pre正好指向反转后的区间链表的第一个结点