面试题24. 反转链表

反转链表

题目描述

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL


提示:
0 <= 节点个数 <= 5000

转载来源:力扣(LeetCode)


题目分析

1→2→3→null
初始化时h为1,now为2,h的next设置成null,有:
null ←1(h) 2(now)→3
现在将保存一下now的next,然后now的next改成前面的head,h修改成now,now修改成保存值,有:
null ← 1←2(h) 3(now)
重复上面操作,有:
null ←1←2←3(h) null(now)
当now为null时,返回h即可

class Solution {
    fun reverseList(head: ListNode?): ListNode? {
        var now = head?.next
        var h= head
        head?.next = null
        while (now != null){
            val tmp = now
            now = now.next
            tmp.next = h
            h = tmp
        }
        return h
    }
}

代码文件


你可能感兴趣的:(面试题24. 反转链表)