单链表翻转问题

将链表 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 不能翻转链表???

阅读 1.5k
1 个回答

主要看:=这个符号的意义,如果表示浅拷贝的话,那么代码2里面执行tmp.Next=newHead后,p.Next的值被改变了,所以跟代码1的运行结果不同了。