200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 如何用C语言实现长整数四则运算? – 网络

如何用C语言实现长整数四则运算? – 网络

时间:2020-08-26 01:31:23

相关推荐

如何用C语言实现长整数四则运算? – 网络

原题:Youaregiventwonon-emptylinkedlistsrepresentingtwonon-negativeintegers.Thedigitsarestoredinreverseorderandeachoftheirnodescontainasingledigit.Addthetwonumbersandreturnitasalinkedlist.

Youmayassumethetwonumbersdonotcontainanyleadingzero,exceptthenumber0itself.

Example:

Input:(2->4->3)+(5->6->4)Output:7->0->8Explanation:342+465=807.

翻译:这里有两组代表非负数(如:342)的链表,是以相反的方向来存放每一位的(如:2->4->3),问:将这个两个链表代表的非负数相加,然后返回一个新链表代表这个结果。

举例:输入:(2->4->3)+(5->6->4)输出:7->0->8结果:342+465=807.

一,偶的错误思路:假设输入的是链表a和链表b

1.先计算出a,b代表的数字N1,N2.然后计算出两者的和:N1+N2=N3.算出N3每一位的数字,然后将反向取得链表c

为什么上面的方案不行?

如果单纯从思路来看,是可行的,但是会遇到整数溢出的问题,试想如果输入的链表是[1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1,1,1,1,1,,1,1]的时候,上面思路的第一步在转换链表到整数的时候就会出错。

二,那正确解法是:

1.将两个链表代表的值从头开始相加,得到新链表的元素2.每一次相加得到的值如果大于9,就在后面的相加中额外加13.如果加到两个链表的尾部,还有进位,就额外多创建一个新链表的元素放到末尾

总结:在对数据进行基本的运算法则时,要多从数据结构的角度来考虑问题,假如一开始就考虑到链表没有整型溢出的缺点,就少走了弯路

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。