| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
							- package main
 
- /* type ListNode struct {
 
- 	Val  int
 
- 	Next *ListNode
 
- } */
 
- /* func list2str(head *ListNode) string {
 
- 	curr := head
 
- 	str := make([]rune, 0)
 
- 	for curr != nil {
 
- 		str = append(str, rune(curr.Val+'0'))
 
- 		curr = curr.Next
 
- 	}
 
- 	return string(str)
 
- } */
 
- /**
 
-  * Definition for singly-linked list.
 
-  * type ListNode struct {
 
-  *     Val int
 
-  *     Next *ListNode
 
-  * }
 
-  */
 
- // before -> curr -> curr.Next -> after
 
- func swapPairsOld(head *ListNode) *ListNode {
 
- 	if head == nil || head.Next == nil {
 
- 		return head
 
- 	}
 
- 	// initialize before, curr, after
 
- 	before := &ListNode{0, head}
 
- 	curr := head
 
- 	after := curr.Next.Next
 
- 	// swap node
 
- 	before.Next = curr.Next
 
- 	curr.Next.Next = curr
 
- 	curr.Next = after
 
- 	// head of result
 
- 	res := before.Next
 
- 	for after != nil && after.Next != nil {
 
- 		// move ptr
 
- 		before = curr
 
- 		curr = after
 
- 		after = after.Next.Next
 
- 		// swap node
 
- 		before.Next = curr.Next
 
- 		curr.Next.Next = curr
 
- 		curr.Next = after
 
- 	}
 
- 	return res
 
- }
 
- func swapPairs(head *ListNode) *ListNode {
 
- 	dummy := ListNode{0, head}
 
- 	curr := &dummy
 
- 	for curr.Next != nil && curr.Next.Next != nil {
 
- 		first, second := curr.Next, curr.Next.Next
 
- 		// swap node
 
- 		first.Next = second.Next
 
- 		second.Next = first
 
- 		curr.Next = second
 
- 		// move forward
 
- 		curr = curr.Next.Next
 
- 	}
 
- 	return dummy.Next
 
- }
 
- /* func main() {
 
- 	l15 := ListNode{5, nil}
 
- 	l14 := ListNode{4, &l15}
 
- 	l13 := ListNode{3, &l14}
 
- 	l12 := ListNode{2, &l13}
 
- 	l1 := &ListNode{1, &l12}
 
- 	fmt.Println(list2str(swapPairs(l1)))
 
- 	l22 := ListNode{2, nil}
 
- 	l2 := &ListNode{1, &l22}
 
- 	fmt.Println(list2str(swapPairs(l2)))
 
- 	l33 := ListNode{3, nil}
 
- 	l32 := ListNode{2, &l33}
 
- 	l3 := &ListNode{1, &l32}
 
- 	fmt.Println(list2str(swapPairs(l3)))
 
- 	fmt.Println(list2str(swapPairs(&ListNode{1, nil})))
 
- } */
 
 
  |