这个链表怎么构造的,有点蒙啊p.next 赋值为list(i)然后又把p.next赋值给p?

来源:5-4 尾递归优化 (tailrec)

慧___

2020-05-26

val MAX_NODE_COUNT = 100000
val head = ListNode(0)
var p = head
for(i in 1… MAX_NODE_COUNT){
p.next = ListNode(i) //这里是构造新节点赋值给p的next
p = p.next!!//这里又把p的next节点赋值给了p
}
这岂不是所有节点的值都用一样了吗?

写回答

1回答

bennyhuo

2020-05-26

不一样呀,

head 的值是 0。

第一次循环时,i = 1,p.next 的值初始化为 1,然后我们把 p 的值赋值为 p.next,此时 p.next 是 null,p 的值是 1

第二次循环时,i = 2,p.next 的值初始化为 2,然后我们把 p 的值赋值为 p.next,此时 p.next 是 null,p 的值是 2

。。。

0
0

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程