版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/glw0223/article/details/88560264
题面
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
源码
func A24_swapPairs(head *ListNode) *ListNode {
if head == nil || head.Next==nil {
return head
}
p := head
head = head.Next
p.Next = head.Next
head.Next = p
p.Next = A24_swapPairs(p.Next)
return head
}
测试代码及结果
func TestA24_swapPairs(t *testing.T) {
head:=question21_30.ListNode{1,nil}
head.Next=&question21_30.ListNode{2,nil}
head.Next.Next=&question21_30.ListNode{3,nil}
head.Next.Next.Next=&question21_30.ListNode{4,nil}
result:=question21_30.A24_swapPairs(&head)
str:="开始"
for result!=nil{
str+=fmt.Sprintf("->%d",result.Val)
result=result.Next
}
fmt.Println(str)
}
=== RUN TestA24_swapPairs
开始->2->1->4->3
--- PASS: TestA24_swapPairs (0.00s)
PASS
github
https://github.com/glw0223/LeetCode-go