【数据结构】利用栈实现表达式求值

前言

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>=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值