使用自定义数据结构

时间:2017-03-16 07:03:28

标签: linked-list

完全披露,我的问题与我正在为我的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对象之一一样多次,但是,当它本身违反整数限制时,如何处理循环变量?

1 个答案:

答案 0 :(得分:0)

  

我意识到我可以通过循环添加'来处理乘法。方法和UnboundedInt对象之一一样多次

这不会成为答案,因为如果任何一个操作数都是非平凡的话,它会太慢。

  

还有一个'添加'方便实施的方法

这很好,因为它将成为解决方案的一部分。 你是怎么实现的? 如果您必须在纸上进行操作,可能会遵循您将要执行的步骤。 您可以以相同的方式实现乘法。 你如何在纸上乘以两个数字? 您将左侧的数字与右侧的每个数字相乘,逐个。 将倍数乘以一位后,添加它们。

例如,假设您要将123456789123234相乘。它会是这样的:

  123456789123 * 234
  ------------
  246913578246
   370370367369
+   493827156492
  ==============
  28888888654782

IntNode乘以1位数字应该很容易, 并且您已经实现了add,因此完整的解决方案并不遥远。总结一下,你还需要实现什么:

  • 乘以1位数字
  • 乘以10
  • 合并上述两项以计算总数