非递归(迭代)
Analysis
由于链表不具有数组可以根据下标随机访问的特性,所以只能从头节点开始逐个的交换到最后一个节点,并且在每次交换过程中需要用两个变量:previous来保存原本处于current节点的前一个节点,previous在交换过程中变为current.next。除此之外,循环的条件是在current不为空的时候,当其为空时,它的previous是新的head。需记住将原头结点的后继设为空。
Code
|
|
|
|
递归
Analysis
它利用递归走到链表的末端,然后再更新每一个node的next 值 (代码倒数第二句)。 在上面的代码中, reverseRest 的值没有改变,为该链表的最后一个node,所以,反转后,我们可以得到新链表的head。
Code
|
|