我試圖乘以兩個單獨鏈接列表中存儲的數字。但是,我的算法變得越來越複雜。我正在按照我們在小學所做的方式進行乘法運算。獲取其中一個列表的價值並將其與另一個列表的每個值相乘,直到涵蓋所有數字。問題是我必須在最後加上這些數字才能獲得乘法的最終結果,這就是我遇到麻煩的地方。我必須找到一種方法,能夠將任意數量的元素相互疊加,並能夠在最後添加結果。到目前爲止,我的代碼是這樣的兩個鏈接列表中的數字相乘
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方法,它有兩個鏈表作爲參數,並做加法。我需要能夠爲我想要的數量做這個過程。 任何建議,或者如果你知道任何更好的方法來完成乘法?
你能更清楚地定義你的要求嗎? –
它可以是點積,但不一定。我想用352乘以3541.我的程序創建了兩個單獨鏈接列表{1,4,5,3}和{2,5,3}。那麼這些元素會逐一相乘,並創建一個{10,6,2,3,17,7,0,5,7,0,8,2}的臨時列表。我必須建立從這個鏈表。可能有更好的方法來做到這一點,但我還不知道。 – user843681
是的,還有更好的方法來做到這一點。使用內置的乘法功能。爲什麼你必須使用鏈表? –