資料結構之中綴表示式實現計算器

2022-09-12 22:54:21 字數 1797 閱讀 5786

判斷是否是乙個運算子的方法

獲取運算子的優先順序方法

計算結果方法

檢視棧頂元素的方法

四個方法,具體**如下:

package

com.ebiz.stack;

/***

@author

yhj * @create 2019-07-20 14:20

* 陣列模擬棧 */

public

class

arraystack

//驗證棧滿

public

boolean

isfull()

//驗證為空

public

boolean

isempty()

//入棧

public

void push(int

value)

top++;

arr[top]=value;

}//出棧

public

intpop()

int value=arr[top];

top--;

return

value;

}//遍歷棧

public

void

list()

while (true

) system.out.printf("出站元素為%d%n",arr[top]);

top--;}}

//返回運算子的優先順序 優先順序用數字表示

//數字越大,代表優先順序越高

//*或者/ 優先順序為1

//+或者- 優先順序為0

//-1 代表運算子為問題運算子

public

int priority(int

operator)

else

if ('+' == operator || '-' ==operator)

else

}//判斷是否為乙個運算子

public

boolean isoperator(char

operator)

//計算方法

public

int calculator(int num01,int num02,int

operator)

return

result;

}//獲取符號棧的棧頂符號,並不是真正取出該元素

public

intpeek()

}

下面給出測試,中綴表示式提前給定好,只涉及到了兩位數,對於小括號還有小數點後面會將中綴轉為字尾,便於計算

package

com.ebiz.stack;

/***

@author

yhj * @create 2019-07-22 11:04

* 棧模擬計算器 中綴表示式 */

public

class

calculator

else

}else

}else

else}}

//繼續掃瞄,索引增加,並判斷是否到最後

index++;

if (index >=expression.length())

}//表示式掃瞄完畢後,對兩個棧中元素進行計算

while (true

) }

//輸出結果

system.out.println("result="+numestack.pop());

}}

資料結構棧之中綴表示式求值(實現計算器綜合計算)

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

中綴表示式計算器

假如給定乙個中綴表示式 1 2 3 4 10 5利用棧就可以匯出字尾表示式123 4 105 當得到乙個字尾表示式時就很容易的求出表示式的值了,也是用棧計算的,對於123 4 105 從前往後,如果遇到運算元的時候直接入棧,遇到操作符,就從棧中彈出兩個操作,那下面的跟上面的那個預算,就可以得到123...

資料結構之中綴表示式轉字尾表示式

中綴表示式轉字尾表示式的基本規則 1.遇到運算元就直接輸出 2.遇到左括號就壓入棧中 3.遇到右括號就將棧中所有符號輸出且彈出 左括號只需要彈出不需要輸出 4.遇到操作符就與棧頂元素進行對比 當前操作符比棧頂操作符的優先順序大的話 就直接將當前操作符壓入棧中 當前操作符比棧頂操作符的優先順序小或者相...