Swap Nodes in Pairs
描述
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
题解
package algorithms
import "github.com/ljun20160606/leetcode/algorithms"
//Given a linked list, swap every two adjacent nodes and return its head.
//
//For example,
//Given 1->2->3->4, you should return the list as 2->1->4->3.
//
//Your alsolutionrithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func swapPairs(head *algorithms.ListNode) *algorithms.ListNode {
if head == nil || head.Next == nil {
return head
}
t := head.Next
head.Next = swapPairs(t.Next)
t.Next = head
return t
}