单链表翻转问题

将链表 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的运行结果不同了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进