【数据结构】简单LISP算术表达式计算器

(数据结构C语言版习题集实习4.4)

问题描述

设计一个简单的LISP算术表达式计算器
简单的LISP算法表达式(以下简称表达式)定义如下:
(1)一个0…9的这个整数;或者
(2)(运算符 表达式 表达式)
例如 6 , (+45) , (+2(+58)) , (+(+25)+8 , (+(+(+12)(+34))(+(+56)(+78)))都是LISP表表达式

实现思路

1.仿照“利用栈实现表达式求值”的思路,利用两个顺序栈,一个存放运算符,一个存放数字(以及运算结果),实现表达式的加减乘除四则运算
2. 利用递归来处理括号嵌套的问题

运行截图

在这里插入图片描述

代码实现


import java.util.Arrays;
import java.util.Scanner;

public class LispTest {
   
    public static void main(String[] args) throws Exception {
   
            ArrayStack OPTR = new ArrayStack();
            ArrayStack OPND = new ArrayStack();
            ListEvaluate le = new ListEvaluate();
            le.EvaluateExpression(OPTR, OPND);
            int sum = (int) OPND.GetTop();
            System.out.println("表达式的结果为:" + sum);

    }
}
class  ListEvaluate{
   
    private static String expression;//表达式
    private static int index=0;//表达式的第 index 个位置
    private static char c; //表达式第index个位置上的对应的字符
    public ListEvaluate(){
   
        Scanner in = new Scanner(System.in);
        System.out.println("请输入表达式:");
        expression = in.next();
        expression+="#"; //在表达式结尾加入#,以免输入的时候忘记输入
        c=expression.charAt(index);
    }
    public boolean isDight(char c){
    //判断字符是否是数字
        if(c>&#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值