前言
java实现,利用int类型存储操作数,完善了char类型范围太小的问题,利用递归,完善了括号嵌套使用的问题。
运行结果截图
代码实现:
import java.util.Arrays;
import java.util.Scanner;
public class StackTest{
//测试
public static void main(String[] args) throws Exception {
ArrayStack OPTR = new ArrayStack();
ArrayStack OPND = new ArrayStack();
EvaluateExpressions ee = new EvaluateExpressions();
ee.EvaluateExpression(OPTR,OPND);
int sum = (int)OPND.GetTop();
System.out.println("表达式的结果为:"+sum);
}
}
class ArrayStack<T> {
//栈的相关方法
private int max_size;//栈的容量
private T[] array;//栈数组
private int top;//栈顶指针
public ArrayStack(){
//申请内存空间
this.max_size=100;
array = (T[])new Object[max_size];
this.top=-1;
}
public ArrayStack(int size){
this.max_size=size;
array = (T[])new Object[max_size];
this.top=-1;
}
public void Push(T t){
//入栈
top++;
if (top>array.length-1){
T[] copy = Arrays.copyOf(array,max_size*2);
array=copy;
}
array[top]=t;
}
public T Pop() throws Exception{
//出栈
if(top>=