判斷是否是乙個運算子的方法
獲取運算子的優先順序方法
計算結果方法
檢視棧頂元素的方法
四個方法,具體**如下:
packagecom.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()
}
下面給出測試,中綴表示式提前給定好,只涉及到了兩位數,對於小括號還有小數點後面會將中綴轉為字尾,便於計算
packagecom.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.遇到操作符就與棧頂元素進行對比 當前操作符比棧頂操作符的優先順序大的話 就直接將當前操作符壓入棧中 當前操作符比棧頂操作符的優先順序小或者相...