谁告诉我具体错在哪里了,在报panic

akamachi · 2019-10-18 01:19:55 · 1039 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2019-10-18 01:19:55 的主题,其中的信息可能已经有所发展或是发生改变。

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 (leetcode 第24题 https://leetcode-cn.com/problems/swap-nodes-in-pairs/) 代码如下:

/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */

go func swapPairs(head *ListNode) *ListNode {
    var tmp *ListNode
    tmp.Next=head  //这里一直在报panic,说无效的存储空间或空指针差异
   for{
        tmp=swap(tmp)
        tmp=(tmp.Next)
        if tmp.Next==nil{
            break
        }
        tmp=(tmp.Next)
        if tmp.Next==nil{
            break
        }
    }
    return tmp.Next
}
func swap(head *ListNode) *ListNode {
    if head.Next==nil{
        return head
    }  
    var head1,head2 *ListNode
    head1=head.Next
    head2=head.Next.Next
    head.Next=head2
    head1.Next=head2.Next
    head2.Next=head1
    return head
}

为什么不允许在前面加一个元素,语法问题错在哪?我实在想不明白。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1039 次点击  
加入收藏 微博
2 回复  |  直到 2019-10-18 14:45:54
eehsiao
eehsiao · #1 · 6年之前

var tmp *ListNode

改成

tmp:=&ListNode{}
TryHenry
TryHenry · #2 · 6年之前

结构体的初始化 tmp := &ListNode{} 或者 tmp :=new(ListNode) 都可以。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传