反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
题解
见注释
go语言版
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
// prev 是所有已经逆转的节点的head
var prev *ListNode
// head 是下一个被逆转的节点
for head != nil {
// 让temp指向head.Next, 免得head.Next不见了.
temp := head.Next
// head称为已经逆转的节点的新head
head.Next = prev
// 让prev重新称为所有已被逆转节点的head
prev = head
// 让head指向下一个被逆转的节点
head = temp
}
return prev
}