棧實現計算器(簡單四則運算)

2022-01-11 18:33:57 字數 1365 閱讀 5861

主要是通過定義乙個數棧和乙個符號棧,並根據給出的計算式進行拆分,迴圈判斷是數字還是符號,考慮數字的連續性和符號計算的優先順序,具體實現如下:

package com.pangzi.stucture;

public class calculator else

}else

}elseelse}}

//讓index+1,看是否掃瞄到最後乙個字元

index++;

if(index >= expression.length())

}//當expression掃瞄完畢後,就依次從數棧和符號棧中彈出進行運算。

while(true)

num1 = numstack.pop();

num2 = numstack.pop();

oper = operstack.pop();

res = numstack.cal(num1, num2, oper);

numstack.push(res);//入棧

}system.out.printf("表示式%s = %d",expression,numstack.pop());//將最後的結果列印出來}}

//定義乙個表示棧的類

class arraystack2

//獲得棧頂的值

public int peek()

//判斷棧是否滿了

public boolean isfull()

//判斷棧是否空

public boolean isempty()

//入棧 push

public void push(int value)

top++;

stack[top] = value;//將新入棧的資料放入陣列

}//出棧 pop

public int pop()

int value = stack[top];//獲取彈棧的值

top--;

return value;//返回彈棧的值

}//顯示棧的情況,遍歷時需要從棧頂往下走

public void list()

for(int i = top;i>=0;i--)

}//返回運算子的優先順序,優先順序人為來確定的,優先順序用數字表示,數字越大優先順序越高

public int priority(int oper)else if(oper == '+' || oper == '-')else

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

public boolean isoper(char val)

//計算方法

public int cal(int num1,int num2,int oper)

return res;}}

python 計算器 四則運算

學習來自 感謝!思路 考慮的四則運算符號 獲取表示式字串 表示式切分 請注意區分 減號 與負號 先出初切 formula list i for i in re.split d d formula if i 然後再判定 if re.search final formula 1 其他正常切分就行 ite...

四則運算計算器

今天做個帶視窗的c 四則運算計算器 輸入中綴表示式 自然表示式 可以用list來放 先把它變成字尾表示式 逆波蘭表示式 用乙個棧放運算子,另乙個棧放字尾表示式 運算子優先順序 1 2 3 4 從左到右遍歷中綴表示式 計算字尾表示式 從左到右掃瞄字尾表示式,如果是數字,放入數字棧。如果是符號,從數字棧...

簡單的四則運算計算器

include stdio.h include stdlib.h include string.h define string length 1000 define number length 40 結構體定義 struct symbol symbol head null,temp null str...