剑指Offer24. 反转链表Golang版
1. 问题描述
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
2. 思路
其实就是一个不断把current.Next指向前一个节点的过程
- 先保存cureent.Next
- 把当current.Next,指向前一个节点prev
- prev和current后移
3. 代码
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var current *ListNode
var prev *ListNode
current = head
for current != nil {
temp := current.Next
current.Next = prev
prev = current
current = temp
}
return prev
}