将链表 1 -> 2 -> 3 -> 4 -> 5 -> null 翻转
代码1
newHead := new(Node)
newHead = nil
p := head
for p != nil {
tmp := p
p = p.Next
tmp.Next = newHead
newHead = tmp
}
代码2
newHead := new(Node)
newHead = nil
p := head
for p != nil {
tmp := p
tmp.Next = newHead
newHead = tmp
p = p.Next
}
为什么代码2 不能翻转链表???
主要看
:=
这个符号的意义,如果表示浅拷贝的话,那么代码2里面执行tmp.Next=newHead
后,p.Next
的值被改变了,所以跟代码1的运行结果不同了。