Java實現基於棧實現整數加法演算法

來源:互聯網
上載者:User

整數是有最大上限的,如果整數超出最大上限位元,如 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;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.