代码随想录算法训练营 | 第三天 | 博客打卡
题目链接:leetcode 206. 反转链表
注:仅为个人笔记,难以细致且通俗。
func reverseList(head *ListNode) *ListNode {
var pre *ListNode
cur := head
for cur != nil {
next := cur.Next
cur.Next = pre
pre = cur
cur = next
}
return pre
}
比较简单不多说了,不过中途碰到个小问题。var pre *ListNode
与 pre := &ListNode{}
的区别没搞清楚。
var pre *ListNode
: 用 var 关键字声明时,pre 被初始化为该类型的零值,对于指针类型来说,零值是 nil。这意味着 pre 不指向任何有效的内存地址。pre := &ListNode{}
: 这行代码使用短变量声明语法(:=)声明了一个名为 pre 的变量,并立即将其初始化为一个新的 ListNode 结构体的地址。&ListNode{} 创建了一个 ListNode 类型的实例,并返回其内存地址。因此,pre 指向一个有效的 ListNode 结构体实例,该实例的各个字段将被赋予它们的零值(例如,对于整数字段,零值是 0)。