c++中的链表乘法

Multiplying linked lists in c++

本文关键字:链表 c++      更新时间:2023-10-16

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

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

如果性能对您来说不重要,您可以使用'高中方法'。首先实现一种方法,将一个数字乘以一个数字,然后开始将其中一个数字乘以另一个数字(同时为每个结果添加偏移量),然后将这些数字相加。比如:

123 x 456 =
         738
+       615
       492
______________
       56088

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