反转链表
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。
说明: 1 ≤ m ≤ n ≤ 链表长度。
示例:
输入: 1-2-3-4-5-NULL, m = 2, n = 4 输出: 1-4-3-2-5-NULL
题目分析
- 反转一段区域,首先肯定想到是一个一个反转 比如2-3-4 先3插前面去 3-2-4 ,然后4插前面去 4-3-2
- 怎么移过去呢?观察这个局部链表,可以知道我们每次把要处理的插入到链表头即可。
- 因此保留一个pre指向反转区域头部,例如示例中是1
- 遍历反转区域元素current,令temp=current-next保存下位,处理好current的前后指向关系,然后把temp插入到链表头,即pre-next即可。
题解代码
1 | /** |