棧實現計算器 利用的是中綴表示式

2021-10-02 20:31:28 字數 2123 閱讀 5520

package stack;

public

class

calculator

else

else}}

else

//如果下乙個是符號,就將temp轉換為數字進數棧,還要將temp重置

else

if(cstack.

isoperator

(chararray[i+1]

))}}

//當遍歷完後,這條式子也計算得差不多了,

//但是符號棧裡面應該還有應該或者兩個符號還沒計算的

while

(true

) nstack.

push

(nstack.

count

(nstack.

pop(

), nstack.

pop(

), cstack.

pop())

);} system.out.

printf

("%s的結果是%s"

,caculation,nstack.

pop())

;}}class

mystack1

public

boolean

isfull()

return

false;}

public

boolean

isempty()

public

void

push

(int element)

top++

; warehouse[top]

=element;

}public

intpop()

throws exception

int temp=warehouse[top]

; top--

;return temp;

}public

void

show()

}/** 下面是對應需要做計算機寬展的功能

*///返回當前棧頂的元素,但不是pop出來,只是看一下

public

intpeek()

//返回運算子的優先順序,* / 是1, + -是0

public

intpriority

(int operator)

else

}//判斷是不是運算子

public

boolean

isoperator

(char temp)

public

intcount

(int num1,

int num2,

int operator)

return result;

}}

下面不是計算器的**,只是構思

package stack;

/* * 可以利用陣列,鍊錶來模擬棧

* 棧的應用也挺廣泛的:

* 1. 二叉樹的深度遍歷

* 2. 圖的深度優先查詢

* 4. 子程式的呼叫

*/public

class

mystack

public

boolean

isfull()

return

false;}

public

boolean

isempty()

public

void

push

(int element)

top++

; warehouse[top]

=element;

}public

intpop()

throws exception

int temp=warehouse[top]

; top--

;return temp;

}public

void

show()

}public

static

void

main

(string[

] args)

}

棧實現綜合計算器(中綴表示式)

定義兩個棧,乙個數字棧 numstack 乙個符號棧 operstack 我們定義乙個index來遍歷我們的表示式 定義乙個keepstring key幫助我們拼串 如果發現key是乙個數字,此時判斷key 的下乙個元素是不是數字,繼續向後遍歷,直到key的下乙個元素不是數字時,將integer.p...

棧實現綜合計算器(中綴表示式)

1.通過乙個index值 索引 來遍歷我們的表示式 2.如果發現是乙個數字,直接入棧 3.如果發現掃瞄到的是乙個符號,就分下面情況 1 如果發現當前的符號棧為空,就直接入棧 2 如果符號棧有操作符,就進行比較,如果當前的操作符的優先順序小於或者等於棧中的操作符,就需要從數棧中pop出兩個數,再從符號...

棧 實現綜合計算器(中綴表示式)

棧 stack 棧的實現定義乙個top來表示棧頂,初始化為 1 入棧 當有資料入棧,top stack top data 出棧 value stack top top 綜合計算器的實現 計算器設計思路 含小括號 先定義兩個陣列棧。乙個用於儲存數字,乙個用於儲存運算符號 在定義乙個index用於讀取傳...