给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
(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
}
~~~
为什么不允许在前面加一个元素,语法问题错在哪?我实在想不明白。