题目描述
反转一个单链表。
- 示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路
思路一:迭代
把下一个节点作为当前节点的上一个节点。
思路二:递归
递归的思路很难想出来,即便是看到答案估计也会花很长时间去理解,本人结合例子进行讲解。
把1–>2这个链表反转:
记录末尾节点为node
先变成1–>2–>1,即head.next.next=head
把头节点的1与2间的联系断开,即head.next=null
便得到了node链表2–>1,完成反转
升级一下,把1–>2–>3这个链表反转:
记录末尾节点为node
处理对象变为了最后两个节点,变成2–>3–>2,即当前的head.next.next=head
把head节点的2与3间的联系断开,即head.next=null
便得到了node链表3–>2