From 1a05fe3f7d1130fa2b16d4b9d56954a97020c707 Mon Sep 17 00:00:00 2001 From: Lam Haoyin Date: Thu, 17 Feb 2022 00:38:48 +0800 Subject: [PATCH] add: 220216 [golang] --- 2202/220216.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 2202/220216.go diff --git a/2202/220216.go b/2202/220216.go new file mode 100644 index 0000000..180c0ff --- /dev/null +++ b/2202/220216.go @@ -0,0 +1,63 @@ +package main + +import "fmt" + +/** + * Definition for singly-linked list. + */ + +type ListNode struct { + Val int + Next *ListNode +} + +func swapPairs(head *ListNode) *ListNode { + ret := ListNode{0, head} + ptr := &ret + + for ptr != nil { + ptrN := ptr.Next + if ptrN == nil { + break + } + + ptrNN := ptrN.Next + if ptrNN == nil { + break + } + + ptrNNN := ptrNN.Next + + ptr, ptrNN.Next, ptr.Next, ptrN.Next = ptrN, ptrN, ptrNN, ptrNNN + } + + return ret.Next +} + +func main() { + head := &ListNode{ + Val: 1, + Next: &ListNode{ + Val: 2, + Next: &ListNode{ + Val: 3, + Next: &ListNode{ + Val: 4, + Next: &ListNode{ + Val: 5, + Next: &ListNode{ + Val: 6, + Next: nil, + }, + }, + }, + }, + }, + } + + head = swapPairs(head) + + for ptr := head; ptr != nil; ptr = ptr.Next { + fmt.Println(ptr.Val) + } +}