|
|
@@ -1,120 +0,0 @@
|
|
|
-package main
|
|
|
-
|
|
|
-import (
|
|
|
- "fmt"
|
|
|
-)
|
|
|
-
|
|
|
-type ListNode struct {
|
|
|
- Val int
|
|
|
- Next *ListNode
|
|
|
-}
|
|
|
-
|
|
|
-func (l *ListNode) Print() {
|
|
|
- var tmp *ListNode = l
|
|
|
-
|
|
|
- for tmp != nil {
|
|
|
- fmt.Printf("%v", tmp.Val)
|
|
|
- tmp = tmp.Next
|
|
|
- }
|
|
|
- fmt.Printf("\n")
|
|
|
-}
|
|
|
-
|
|
|
-func addTwoNumbers(l1 *ListNode, l2 *ListNode) *ListNode {
|
|
|
- var l1Tmp *ListNode = l1
|
|
|
- var l2Tmp *ListNode = l2
|
|
|
- var ret *ListNode = &ListNode{-1, nil}
|
|
|
- var retTail *ListNode = ret
|
|
|
- var buf int = 0
|
|
|
-
|
|
|
- for l1Tmp != nil && l2Tmp != nil {
|
|
|
- retTail.Val = l1Tmp.Val + l2Tmp.Val
|
|
|
-
|
|
|
- if buf != 0 {
|
|
|
- retTail.Val += buf
|
|
|
- }
|
|
|
- buf = retTail.Val / 10
|
|
|
- retTail.Val %= 10
|
|
|
-
|
|
|
- l1Tmp = l1Tmp.Next
|
|
|
- l2Tmp = l2Tmp.Next
|
|
|
-
|
|
|
- if l1Tmp != nil || l2Tmp != nil {
|
|
|
- retTail.Next = &ListNode{-1, nil}
|
|
|
- retTail = retTail.Next
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for l1Tmp != nil {
|
|
|
- retTail.Val = l1Tmp.Val
|
|
|
-
|
|
|
- if buf != 0 {
|
|
|
- retTail.Val += buf
|
|
|
- buf = retTail.Val / 10
|
|
|
- retTail.Val %= 10
|
|
|
- }
|
|
|
-
|
|
|
- l1Tmp = l1Tmp.Next
|
|
|
-
|
|
|
- if l1Tmp != nil {
|
|
|
- retTail.Next = &ListNode{-1, nil}
|
|
|
- retTail = retTail.Next
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- for l2Tmp != nil {
|
|
|
- if retTail == nil {
|
|
|
- retTail = &ListNode{-1, nil}
|
|
|
- }
|
|
|
- retTail.Val = l2Tmp.Val
|
|
|
-
|
|
|
- if buf != 0 {
|
|
|
- retTail.Val += buf
|
|
|
- buf = retTail.Val / 10
|
|
|
- retTail.Val %= 10
|
|
|
- }
|
|
|
-
|
|
|
- l2Tmp = l2Tmp.Next
|
|
|
-
|
|
|
- if l2Tmp != nil {
|
|
|
- retTail.Next = &ListNode{-1, nil}
|
|
|
- retTail = retTail.Next
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if buf != 0 {
|
|
|
- retTail.Next = &ListNode{buf, nil}
|
|
|
- retTail = retTail.Next
|
|
|
- }
|
|
|
-
|
|
|
- return ret
|
|
|
-}
|
|
|
-
|
|
|
-func arrayToListNode(l []int) *ListNode {
|
|
|
- var i int = 0
|
|
|
- var res ListNode = ListNode{l[i], nil}
|
|
|
- var tmp *ListNode = &res
|
|
|
- i++
|
|
|
-
|
|
|
- for ; i < len(l); i++ {
|
|
|
- tmp.Next = &ListNode{l[i], nil}
|
|
|
- tmp = tmp.Next
|
|
|
- }
|
|
|
-
|
|
|
- return &res
|
|
|
-}
|
|
|
-
|
|
|
-func main() {
|
|
|
- // tmp11 := ListNode{3, nil}
|
|
|
- // tmp12 := ListNode{4, &tmp11}
|
|
|
- // var l1 ListNode = ListNode{2, &tmp12}
|
|
|
- var l1 *ListNode = arrayToListNode([]int{0})
|
|
|
- fmt.Printf("l1 => ")
|
|
|
- l1.Print()
|
|
|
-
|
|
|
- var l2 *ListNode = arrayToListNode([]int{2, 7, 8})
|
|
|
- fmt.Printf("l2 => ")
|
|
|
- l2.Print()
|
|
|
-
|
|
|
- // fmt.Printf("res => ")
|
|
|
- addTwoNumbers(l1, l2).Print()
|
|
|
-}
|