中綴表示式實現多位數的計算
**實現:
public
class
calculatordemo
else
//否則直接入符號棧
else}}
//如果是數字直接入數棧
else
else}}
index++;if
(index>=expresion.
length()
)}//表示式掃瞄完後就順序的從數棧和符號棧中pop出相應的數字和符號並執行
while
(true
) num1=numstack.
pop();
num2=numstack.
pop();
char ch=
(char
) operstack.
pop();
res1=arraystack2.
cal(num1,num2,ch)
; numstack.
push
(res1);}
system.out.
println
("結果為:"
+numstack.
pop())
;}}class
arraystack2
//判斷是否為空
public
boolean
isempty()
//判斷棧是否以滿
public
boolean
isfull()
//返回棧頂元素
public
intshow()
//入棧
public
void
push
(int value)
top++
; stack[top]
=value;
}//出棧
public
intpop()
int value=stack[top]
; top--
;return value;
}public
void
showlist()
system.out.
println
(stack[top]);
top--;}
}//獲取符號優先順序
public
static
intpriority
(char oper)
else
if(oper==
'+'||oper==
'-')
else
}//判斷是不是乙個符號
public
static
boolean
isoper
(char val)
//計算方法
public
static
intcal
(int num1,
int num2,
char oper)
return res;
}}
《資料結構與演算法》之棧
資料結構與演算法 之鍊錶 資料結構與演算法 之佇列 資料結構與演算法 之排序 資料結構與演算法 之二分查詢 資料結構與演算法 之二叉樹 關於 棧 我有乙個非常貼切的例子,就是一摞疊在一起的盤子。我們平時放盤子的時候,都是從下往上乙個乙個放 取的時候,我們也是從上往下乙個乙個地依次取,不能從中間任意抽...
資料結構與演算法之棧
字首表示式 求值 從右至左掃瞄表示式,遇到數字時,將數字壓入堆疊,遇到運算子時,彈出棧頂的兩個數,用運算子對它們做相應的計算 棧頂元素 和 次頂元素 並將結果入棧 重複上述過程直到表示式最左端,最後運算得出的值即為表示式的結果 例如 3 4 5 6 對應的字首表示式就是 3 4 5 6 針對字首表示...
資料結構與演算法之棧
需求 大家看到,字尾表示式適合計算式進行運算,但是人卻不太容易寫出來,尤其是表示式很長的情況下,因此在開發中,我們需要將 中綴表示式轉成字尾表示式。演算法思路分析 1 初始化兩個棧 運算子棧s1和儲存中間結果的棧s2 2 從左至右掃瞄中綴表示式 3 遇到運算元時,將其壓s2 4 遇到運算子時,比較其...