【剑指offer】反转链表-- Java实现
反转链表
http://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca
【剑指offer】反转链表 -- Java实现
一、非递归
- 分析
为了方便理解,我们以 1->2->3->4这个链表来做演示。输出的效果是4->3->2->1
依旧是1->2->3->4
准备两个空结点 pre用来保存先前结点、next用来做临时变量
在头结点node遍历的时候此时为1结点
next = 1结点.next(2结点)
1结点.next=pre(null)
pre = 1结点
node = 2结点
进行下一次循环node=2结点
next = 2结点.next(3结点)
2结点.next=pre(1结点)=>即完成2->1
pre = 2结点
node = 3结点
进行循环...
- 代码
public class Solution { public ListNode ReverseList(ListNode head) { ListNode pre = null; ListNode next = null; while (head != null) { next = head.next; head.next = pre; pre = head; head = next; } return pre; } }
}
3. 复杂度
时间复杂度:
空间复杂度: