题目
Reverse a singly linked list.
Example:
1 | Input: 1->2->3->4->5->NULL |
Follow up:
A linked list can be reversed either iteratively or recursively. Could you implement both?
简单来说,将一个链表反转过来(还推荐使用迭代和递归两种方法来实现)
题解
迭代法
代码
1 | /** |
分析
画图分析:
每个部分的蓝色是我们预先定义的一些变量,下边的 红色->黄色->绿色 是我们反转链表的步骤(标注了1,2,3以方便理解)。
递归法
代码
1 | /** |
分析
简单来说,递归法的思路是这样的
- 首先我们将头部后边的反转;
- 然后我们将后边的尾巴连接到头上;
- 然后把头的
next
指向nullptr
;