完全披露,我的问题与我正在为我的Data Structures类工作的项目有关。我知道这通常是不受欢迎的,但我希望它可能没问题,因为我已经完成了数据结构,而且我只是在创建方法时寻求帮助。
该项目是使用自定义链接列表实现自定义数据结构来表示无界整数。我不能使用BigInteger或LinkedList类。我使用the IntNode class provided from the project.
实现了数据结构该类接收一串数字,将其分成3个字符块,将这些块转换为整数,并将每个块存储在自定义的链接列表中。 IntNode对象。
例如:123456789123表示为4个IntNode,< 123> < 456> < 789> < 123>
我实施困难的方法是:
UnboundedInt multiply(UnboundedInt) 将当前UnboundedInt与传入的UnboundedInt相乘的方法。返回是一个新的UnboundedInt。
还有一个'添加'方法很容易实现,我意识到我可以通过循环添加'来处理乘法。方法和UnboundedInt对象之一一样多次,但是,当它本身违反整数限制时,如何处理循环变量?
答案 0 :(得分:0)
我意识到我可以通过循环添加'来处理乘法。方法和UnboundedInt对象之一一样多次
这不会成为答案,因为如果任何一个操作数都是非平凡的话,它会太慢。
还有一个'添加'方便实施的方法
这很好,因为它将成为解决方案的一部分。 你是怎么实现的? 如果您必须在纸上进行操作,可能会遵循您将要执行的步骤。 您可以以相同的方式实现乘法。 你如何在纸上乘以两个数字? 您将左侧的数字与右侧的每个数字相乘,逐个。 将倍数乘以一位后,添加它们。
例如,假设您要将123456789123
与234
相乘。它会是这样的:
123456789123 * 234
------------
246913578246
370370367369
+ 493827156492
==============
28888888654782
将IntNode
乘以1位数字应该很容易,
并且您已经实现了add
,因此完整的解决方案并不遥远。总结一下,你还需要实现什么: