题目
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
解答
分析
这道题是经典链表题目,可以用迭代和递归两种不同的思路来进行解决
解答一:使用迭代
思路
这个方法要使用到三个指针,第一个指向前一个节点,第二个指向当前节点,第三个指向下一个节点。每次把当前节点的next指针指向前一个节点,然后把三个指针往后移动,重复直到完成逆转。
代码
/**
* Example:
* var li = ListNode(5)
* var v = li.`val`
* Definition for singly-linked list.
* class ListNode(var `val`: Int) {
* var next: ListNode? = null
* }
*/
class Solution {
fun reverseList(head: ListNode?)