我正在尝试将存储在两个单链表中的数字相乘。但是,我的算法变得非常复杂。我正在按照我们在小学时所做的方式进行乘法运算。获取其中一个列表的值并乘以另一个列表的每个值,直到我们覆盖所有数字。问题是我必须在最后将这些数字相加才能得到乘法的最终结果,这就是我遇到麻烦的地方。我必须找到一种能够将任意数量的元素相乘并能够在最后将结果相加的方法。到目前为止我的代码是这样的
public SingleyLinkedList Multiply(SingleyLinkedList list1,
SingleyLinkedList list2)
{
SingleyLinkedList multiplyList = new SingleyLinkedList();
SingleyLinkedList tempList1 = new SingleyLinkedList();
SingleyLinkedList tempList2 = new SingleyLinkedList();
for (int j = 0; j < list2.Size(); j++)
{
int carry = 0;
int B = Convert.ToInt32(list2.GetValue(j));
for (int k = 0; k < list1.Size(); k++)
{
int A = Convert.ToInt32(list1.GetValue(k));
if (k == list1.Size()-1)
{
int multiply = ((A * B) + carry);
multiplyList.InsertAtFront(multiply);
carry = 0;
}
if (k < list1.Size()-1)
{
int multiply = ((A * B) + carry) % 10;
multiplyList.InsertAtFront(multiply);
carry = 0;
}
carry = (int)((A * B) / 10);
}
}
//return multiplyList;
for ( int t = 0 ; t < list2.Size() ; t++)
{
for (int n = 0; n < list1.Size(); n++)
{
int val = Convert.ToInt32(multiplyList.GetValue(n));
tempList1.InsertAtFront(val);
}
// adding zero to take care of 10th
for (int m = 0; m < list2.Size() - 1; m++)
{
tempList1.InsertAtFront(0);
}
}
return tempList1;`
在这个阶段之后,我必须将我的值传递给我创建的 Add 方法,该方法将两个链表作为参数并进行加法。我需要能够对任意数量的数字执行此过程。有什么建议,或者您是否知道任何更好的乘法方法?