我正在編寫一個程序,它允許用戶使用大數字執行算術運算,這是使用雙向鏈表構造的。到目前爲止,我已經做了一個附加功能,但現在我正在努力爲乘法做一個,我不能真正想出一些好東西。我正在考慮這樣做:在C++中乘以鏈表
假設有2個數字,1000和2000 | 0000(表示數字組成的不同節點之間的中斷)。如果你乘以數字,你將得到200 | 0000 | 0000。我可以創建一個函數,首先將2個節點相乘,然後將其分爲更小的節點。之後,它將乘以下一個節點,檢查最後一個節點的大小,如果剩餘空間,則將一部分添加到該節點並將剩餘部分放在下一個節點中。但是,如果一個數字小於另一個數字呢?那麼你會乘以一個未定義的數字..這種方法有沒有「未來」?或者我應該尋找另一個(我做了一些研究,但到目前爲止沒有發現任何用途)
問題是_使用鏈表來表示大整數有一個future_,是否正確?要阻止這種非建設性的封閉是困難的,而且與C++無關,現在呢? – jogojapan
老實說,未來擴展的最佳機會是使用可靠的,經過驗證的,經過測試的BigNum庫,其中有幾個庫。來自[OpenSSL](http://www.openssl.org/docs/crypto/bn.html)(我真的忘了名字,但我相信它是BIGNUM)的歷史有相當長的歷史。還有一些是C++,還有一些是C/C++的BIGNUM。如果這是爲了工作,我會選擇一條替代路線。 – WhozCraig
即使你爲了好玩而自己創建BigNum版本,我也會建議使用std :: vector而不是雙向鏈表,因爲前者有更好的內存分配,所以它也更快。 –