55 lines
903 B
Go
55 lines
903 B
Go
|
|
package main
|
||
|
|
|
||
|
|
type ListNode struct {
|
||
|
|
Val int
|
||
|
|
Next *ListNode
|
||
|
|
}
|
||
|
|
|
||
|
|
func main() {
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
func swapPairs(head *ListNode) *ListNode {
|
||
|
|
|
||
|
|
firstNode := (*ListNode)(head)
|
||
|
|
secondNode := (*ListNode)(nil)
|
||
|
|
num := 0
|
||
|
|
for head != nil {
|
||
|
|
if head.Next != nil {
|
||
|
|
if head.Next.Next != nil {
|
||
|
|
if num == 0 {
|
||
|
|
firstNode = head.Next
|
||
|
|
secondNode = head
|
||
|
|
}
|
||
|
|
if secondNode != nil && num != 0 {
|
||
|
|
secondNode.Next = head.Next
|
||
|
|
}
|
||
|
|
tmpright := head.Next.Next
|
||
|
|
head.Next.Next = head
|
||
|
|
head.Next = tmpright
|
||
|
|
secondNode = head
|
||
|
|
head = tmpright
|
||
|
|
|
||
|
|
num++
|
||
|
|
continue
|
||
|
|
} else {
|
||
|
|
if num == 0 {
|
||
|
|
firstNode = head.Next
|
||
|
|
secondNode = head
|
||
|
|
}
|
||
|
|
if secondNode != nil && num != 0 {
|
||
|
|
secondNode.Next = head.Next
|
||
|
|
}
|
||
|
|
tmpright := head.Next.Next
|
||
|
|
head.Next.Next = head
|
||
|
|
secondNode = head
|
||
|
|
head.Next = tmpright
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
head = head.Next
|
||
|
|
num++
|
||
|
|
}
|
||
|
|
return firstNode
|
||
|
|
}
|