用棧實現表示式計算

2021-10-01 07:45:20 字數 1851 閱讀 3383

public

class

calculator

public

static

inthandle

(string express)

else

}else

}else

else

int num = integer.

parseint

(keepnum)

; keepnum ="";

numstack.

push

(num);}

} index++;if

(index >= express.

length()

)}int operator =0;

while

(true

) num1 = numstack.

pop();

num2 = numstack.

pop();

operator = opestack.

pop();

result =

calcualte

(num1, num2, operator)

; numstack.

push

(result);}

//數字棧留下的最後乙個元素,即為運算的結果

return numstack.

peek()

;}/** * 對出棧的元素進行計算

** @param num1 第乙個出棧的數字

* @param num2 第二個出棧的數字

* @param operator 出棧的運算子

* @return 返回運算的結果

*/public

static

intcalcualte

(int num1,

int num2,

int operator)

return result;

}/**

* 獲取當前運算子的優先順序

** @param operator 運算子

* @return 返貨運算子的優先順序

*/public

static

intpriority

(int operator)

else

if(operator ==

'+'|| operator ==

'-')

else

}/**

* 判斷當前索引的位置所對應的是否是操作符

** @param indexchar

* @return 返回判斷的結果

*/public

static

boolean

isoperator

(char indexchar)

}class

arraystack

public

boolean

isfull()

public

boolean

isempty()

public

intpeek()

public

void

push

(int value)

stack[

++top]

= value;

}public

intpop()

return stack[top--];

}public

void

show()

}}

用棧實現表示式計算 C

思路 1.首先建立倆個棧,乙個存資料 datastack 另乙個存運算子 operatorstack 2.表示式計算 資料 datasatck,運算子 operatorstack if 當運算子棧為空時 將第乙個運算子放入棧中 else if 此時的運算子的優先順序 棧頂的運算子優先順序 運算子入棧...

用棧計算表示式

首先宣告我們的表示式 expression 只是簡單的四則運算,再加上小括號.運算元operand,操作符operator 如果直接給出字尾表示式 postfix,也叫逆波蘭式 是最容易計算的,這種表示式中已經不含括號.方法 遇到運算元時壓入棧中 遇到操作符時從棧中彈出兩個元素進行此運算,再將運算結...

用棧計算表示式

首先宣告我們的表示式 expression 只是簡單的四則運算,再加上小括號.運算元operand,操作符operator 如果直接給出字尾表示式 postfix,也叫逆波蘭式 是最容易計算的,這種表示式中已經不含括號.方法 遇到運算元時壓入棧中 遇到操作符時從棧中彈出兩個元素進行此運算,再將運算結...