题目描述
利用栈来实现含有加,减,乘,除等基本运算,输出表达式的值(乘是字母x)
输入
3x(15/5)+8
输出
17
样例输入 Copy
24-[6+(27/3)x2]
样例输出 Copy
0
分析:
此题无疑多加了一个‘[]’。基本思路还是一样的,但是注意,此题的乘是‘X’。而不是’*‘。这是要点。基本思路还是逆波兰。`
#include"stdio.h"
#include"string.h"
#define MAX_lenght 10000
typedef struct
{
double data[MAX_lenght];
int top;
} SqStack;//数字的存入。
typedef struct
{
char data[MAX_lenght];
int top;
} SqStackchar;//符号的存入
SqStack S;
SqStackchar Symbol;
void PUSHchar(char t)
{
{
Symbol.data[Symbol.top]=t;
Symbol.top++;
}
}
void POPchar(char *t)
{
{
*t=Symbol.data[Symbol.top-1];
Symbol.top--;
}
}
void PUSH(double e)
{
{
S.data[S.top]=e;
S.top++;
}
}
void POP(double *e)
{
{
*e=S.data