1 iterative: 先初始化pre为Null,然后调用while循环,在循环体中,首先将curr指向head,之后head移向head.next;再变换指针方向,将curr.next指向pre,这样对于当前head和当前head的next就定义好了;接着就是对下一个循环做准备,将pre指向当前curr,已备下一个循环使用;最后返回pre
2 recursive:递归的思想是,因为是调用同一个函数,关键就是找到下一次递归的参数传递;没有head或者head.next时,直接返回head;递归时参数head将变成head.next;先recur到底,找到最后一个node,将这最后一个取名为new_head
3 recursive: 加一个变量pre=None,寻找下一次循环的head和pre
1 需要注意的是cur在指向head后,马上需要把head指向head.next,因为在下面cur.next = pre会破坏之前的结构,如果head指向head.next在这之后进行,则head将会指向空了
2 最后返回的是pre,不是cur
recursive:
https://leetcode.com/problems/reverse-linked-list/discuss/140916/Python-Iterative-and-Recursive
recursive method
每次把head.next保存下来,这样就不用像我之前写的那样,用while循环去找最后一个node了,大大降低了时间复杂度
直接将linked list的值存入stack就好,不需要把整个node存进去。只存值的好处是后面可以直接根据这些值来构建一个linked list。存node的话,处理不好的话就会出现环