中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

鏈表表示數字相加 go語言版本

發布時間:2020-03-03 02:55:41 來源:網絡 閱讀:339 作者:雷頓學院 欄目:開發技術

鏈表表示數字相加 go語言版本


給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲,它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。你可以假設除了數字 0 之外,這兩個數字都不會以零開頭。

示例:

輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)

輸出:7 -> 0 -> 8

原因:342 + 465 = 807

package?main
import?"fmt"
import?"strconv"
import?"reflect"
type?ListNode?struct?{
????data?int
????next?*ListNode
}
//轉成字符串,數字?相加,再轉成鏈表
func?AddTwoNum(l1?*ListNode,?l2?*ListNode)?*ListNode?{
????????l1Int,_?:=?strconv.Atoi(reverse(l1))
????????l2Int,_?:=?strconv.Atoi(reverse(l2))
????????l?:=?l1Int?+?l2Int
????????lStr?:=?strconv.Itoa(l)
????????fmt.Println(reflect.TypeOf(lStr))
????????fmt.Println(lStr)
????????var?newList?[]*ListNode
????????for?_,v?:=?range?lStr?{
????????fmt.Println(string(v))
????????n,_?:=?strconv.Atoi(string(v))
????????node?:=?&ListNode{data:n}
????????newList?=?append(newList,node)
????????}
????????head?:=?new(ListNode)
????????tail?:=?head
????????for?k,node?:=?range?newList?{
????????if?k?==?len(newList)-1?{
????????newList?=?append(newList,nil)
????????}
????????node.next?=?newList[k+1]
????????tail.next?=?node
????????tail?=?tail.next
????????}
????????return?head
????}

func?reverse(l?*ListNode)?string?{
????var?s?string
????for?l?!=?nil?{
????s?+=?strconv.Itoa(l.data)
????l?=?l.next
????}
????return?s
}

//?反轉鏈表,相加,注意進位
func?(l?*ListNode)AddTwoNumLink(l1?*ListNode)?*ListNode?{
????//head?:=?new(ListNode)
????var?head?*ListNode
????head?=?&ListNode{}
????newList?:=?new(ListNode)
????newList?=?head
????var?newNode?*ListNode
????l?=?l.reverseLink()
????l1?=?l1.reverseLink()
????data?:=?0
????carry?:=?0
????//fmt.Println(l,l1)
????for?l?!=?nil?||?l1?!=?nil?{
????????var?data1,data2?int
????????if?l?!=?nil?{
????????????data1?=?l.data
????????????l?=?l.next
????????}?else?{
????????????data1?=?0
????????}
????????if?l1?!=?nil?{
????????????data2?=?l1.data
????????????l1?=?l1.next
????????}?else?{
????????????data2?=?0
????????}
????????fmt.Println(data1,data2)
????????data?=?(data1?+?data2?+?carry)?%?10
????????newNode?=?&ListNode{data:data}
????????head.next?=?newNode
????????carry?=?(data1?+?data2?+?carry)?/?10
????????head?=?head.next??
????}
????return?newList.next.reverseLink()
}

func?(l?*ListNode)reverseLink()?*ListNode?{
????//pre?:=?new(ListNode)
????var?pre?*ListNode
????next?:=?new(ListNode)
????for?l?!=?nil?{
????????next?=?l.next
????????//fmt.Println(l.next)
????????l.next?=?pre
????????pre?=?l
????????l?=?next
????}
????l?=?pre
????return?l
????//return?pre
}

func?(l?*ListNode)readLink()?{
????var?result?[]int
????for?l?!=?nil?{
????result?=?append(result,l.data)
????l?=?l.next
????}
????fmt.Println(result)
}

func?main()??{
????node7?:=?&ListNode{data:7,next:nil}
????node6?:=?&ListNode{data:6,next:node7}
????node5?:=?&ListNode{data:5,next:node6}

????node4?:=?&ListNode{data:4,next:?node5}

????node3?:=?&ListNode{data:3,next:nil}
????//node3?:=?&ListNode{data:3,next:nil}
????node2?:=?&ListNode{data:2,next:node3}
????node1?:=?&ListNode{data:1,next:?node2}
????
????
????//x?:=?AddTwoNum(node1,node4)
????node1.readLink()
????//node1.reverseLink().readLink()
????node1.AddTwoNumLink(node4).readLink()
????//fmt.Println(r)
?
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

go
AI

乐清市| 连州市| 阳西县| 尼木县| 南京市| 金华市| 绥中县| 永济市| 夏河县| 洱源县| 翁源县| 松溪县| 若羌县| 东兴市| 藁城市| 绵竹市| 建德市| 施秉县| 康平县| 福建省| 赤水市| 金沙县| 河北省| 云和县| 高密市| 汶川县| 温宿县| 吴堡县| 重庆市| 军事| 开远市| 囊谦县| 泸水县| 札达县| 井研县| 宜都市| 公安县| 拜泉县| 剑阁县| 汾西县| 昌宁县|