整數是有最大上限的,如果整數超出最大上限位元,如 4398912120931092319+49832232849329019019210921029,此時整型變數無法儲存這些數字.解 決的辦法是,可利用字串儲存這些數字,再利用棧做按位加法.
1.用Java實現,首先使用鏈表LinkedList構造棧資料結構.
import java.util.LinkedList;
public class IntStack {
private LinkedList<Integer> storage = new LinkedList<Integer> ();
/** 入棧 */
public void push(int v) {
storage.addFirst(v);
}
/** 出棧,但不刪除 */
public int peek() {
return storage.getFirst();
}
/** 出棧 */
public int pop() {
return storage.removeFirst();
}
/** 棧是否為空白 */
public boolean empty() {
return storage.isEmpty();
}
/** 列印棧元素 */
public String toString() {
return storage.toString();
}
}
2.使用棧加法操作.
2.1棧oper1和棧oper2分別儲存兩個加數,棧result儲存結果;
2.2方法pushNum(String soper1, String soper2)將兩個數字字串分別儲存於兩個棧中 ;
2.3方法add()進行加法操作,具體演算法是:
[1]整型變數addition儲存一個十位值,只能取值0或1,兩個9相加為18;
[2]迴圈從兩個棧中取資料,將相加的結果的個位值儲存於棧result,十位值儲存於整型變 量addition;
[3]整型變數addition初始值為0,每次要參與下一輪運算;
[4]當某加數棧(棧oper1或棧oper2)為空白後,直接將另一個棧的資料複製到棧result;