输入一个链表,反转链表后,输出新链表的表头。
方法一:头插法
链表问题通常用指针操作更清晰明了。反转链表只需要把当前指针从指向下一结点转向前一个结点即可。可是这样会导致链表断开。所以需要多加个指针记录后一个结点。
时间复杂度:o(n) 空间复杂度:o(1)
方法二思路:递归
当指针指向nk 时,nk的前面还没有反转,nk的后面已经反转 :
n1 → … → nk-1 → nk → nk+1 ← … ← nm
那么 nk.next.next=nk;
时间复杂度:o(n) 空间复杂度:o(n)