1

我正在编写一个程序,该程序允许用户执行大数的算术运算,这些运算是使用双向链表构造的。到目前为止,我已经制作了一个加法函数,但现在我正在尝试制作一个用于乘法的函数,但我真的想不出什么好东西。我正在考虑这样做:

假设有 2 个数字,1000 和 2000|0000(| 表示组成数字的不同节点之间的间隔)。如果将数字相乘,您将得到 200|0000|0000。我可以创建一个函数,首先将 2 个节点相乘,然后将其划分为更小的节点。之后它将乘以下一个节点,检查最后一个节点的大小,如果还有空间,则将一部分添加到该节点并将剩余部分放入下一个节点。但是,如果一个数字小于另一个数字怎么办?然后你会把它乘以一个未定义的数字。这个方法有什么“未来”吗?或者我应该寻找另一个(我做了一些研究,但到目前为止没有发现任何有用的东西)

4

1 回答 1

1

如果性能对您不重要,您可以使用“高中方法”。首先实现一个将一个数字乘以一个数字的方法,然后开始将其中一个数字乘以另一个数字(也为每个结果结果添加一个偏移量),然后将这些数字相加。就像是:

123 x 456 =
         738
+       615
       492
______________
       56088

用链表实现这一点应该不会太难。

于 2012-12-31T07:42:32.870 回答