链表表示数字相加go语言版本-创新互联

链表表示数字相加 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)   }

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享文章:链表表示数字相加go语言版本-创新互联
文章URL:http://myzitong.com/article/ghgge.html