Advertisement

表达式求值(C语言)

阅读量:

代码所能实现的功能如下:

  • 可对任意正整数进行运算
  • 仅支持 + - * / () 这些基本运算符

我所编写的程序,
目的是让其能够处理任意正整数的表达式计算,因此采用了两个栈结构,分别用于存储运算符和操作数;
注释:若只使用一个栈,我认为只能实现0到9之间的简单表达式计算
由于同时使用了两个栈(分别用于存储不同类别的数据,一个用于字符,另一个用于数值),因此需要分别编写初始化、入栈、出栈以及获取栈顶元素的相关函数

接下来是关键部分,即如何编写表达式处理代码,以应对运算优先级的问题

补充说明:在代码中出现的以下定义:

  • TR:表示运算符,即 + - * / ()
  • ND:表示操作数,即整型数值

另外提醒一点,在控制台输入表达式时,若包含括号(),必须使用英文输入法输入,否则可能会导致程序运行异常,甚至让人感到崩溃

复制代码
    #include<iostream>
    using namespace std;
    
    #define starksize 100 
    typedef struct{
    	char *base;
    	char *top;
    	int length ;
    }StarkTR; //寄存运算符
    
    typedef struct{
    	int *b

全部评论 (0)

还没有任何评论哟~