反转链表 (剑指offer)

输入一个链表,反转链表后,输出新链表的表头。

方法一:头插法

链表问题通常用指针操作更清晰明了。反转链表只需要把当前指针从指向下一结点转向前一个结点即可。可是这样会导致链表断开。所以需要多加个指针记录后一个结点。

时间复杂度:o(n)                   空间复杂度:o(1)

方法二思路:递归

当指针指向nk 时,nk的前面还没有反转,nk的后面已经反转 :

n1 → … → nk-1 → nk → nk+1 ← … ← nm

那么 nk.next.next=nk;

时间复杂度:o(n)               空间复杂度:o(n)

苟有恒,何必三更眠五更起;最无益,莫过一日暴十日寒。
原文地址:https://www.cnblogs.com/shaer/p/10345887.html