2 つの個別にリンクされたリストに格納されている数字を乗算しようとしています。しかし、私のアルゴリズムは非常に複雑になりました。小学校でやったようにかけ算をしています。リストの 1 つの値を取得し、すべての数値をカバーするまで、他のリストの各値を乗算します。問題は、掛け算の最終結果を得るためにこれらの数値を最後に加算しなければならないことです。ここで問題が発生します。任意の数の要素を相互に乗算し、最後に結果を合計できる方法を見つける必要があります。これまでのところ、私のコードは次のようになっています
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 メソッドに値を渡す必要があります。このメソッドは、2 つのリンクされたリストをパラメーターとして取り、加算を行います。このプロセスを必要な数だけ実行できる必要があります。任意の提案、または乗算を行うためのより良い方法を知っている場合は?