LeetCode-golang两两交换链表中的节点(题24)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/glw0223/article/details/88560264