题目
中缀表达式转前缀表达式
要求:表达式包含6种操作符: +, -, *, /, (, )
(1) 先计算括号内,后计算括号外;(2) 在无括号或同层括号内,先进行乘除运算,后进行加减运算,即乘除运算的优先级高于加减运算的优先级;(3) 同一优先级运算,从左向右依次进行.
例如:
输入 中缀表达式:A+B*(C-D)-E/F
输出 前缀表达式:-+A*B-CD/EF(括号不用输 出)
需要运用栈的知识来编~~~~急~~~~
要求:表达式包含6种操作符: +, -, *, /, (, )
(1) 先计算括号内,后计算括号外;(2) 在无括号或同层括号内,先进行乘除运算,后进行加减运算,即乘除运算的优先级高于加减运算的优先级;(3) 同一优先级运算,从左向右依次进行.
例如:
输入 中缀表达式:A+B*(C-D)-E/F
输出 前缀表达式:-+A*B-CD/EF(括号不用输 出)
需要运用栈的知识来编~~~~急~~~~
提问时间:2021-03-24
答案
全是自己写的~~给分~~
#include
#include
using namespace std;
#define maxSize 100
class Stack{
public:
Stack() {top = -1 ; };
bool Push(char a)
{
if(!IsFull())
c[++top] = a;
else
return false;
return true;
}
bool pop(char &a)
{
if(!IsEmpty())
a = c[top--];
else
return false;
return true;
}
bool getTop(char &a)
{
if(!IsEmpty())
a = c[top];
else
return false;
return true;
}
bool IsEmpty()
{
return top == -1 ? true:false ;
}
bool IsFull()
{
return top == (maxSize-1) ? true:false ;
}
private:
char c[maxSize];
int top;
};
int isp(char a)
{
if(a == '#')
return 0;
if(a == '(')
return 6;
if(a == '*' || a == '/')
return 4;
if(a == '+' || a == '-')
return 2;
if(a == ')')
return 1;
return false;
}
int icp(char a)
{
if(a == '#')
return 0;
if(a == '(')
return 1;
if(a == '*' || a == '/')
return 5;
if(a == '+' || a == '-')
return 3;
if(a == ')')
return 6;
return false;
}
void main()
{
cout
#include
#include
using namespace std;
#define maxSize 100
class Stack{
public:
Stack() {top = -1 ; };
bool Push(char a)
{
if(!IsFull())
c[++top] = a;
else
return false;
return true;
}
bool pop(char &a)
{
if(!IsEmpty())
a = c[top--];
else
return false;
return true;
}
bool getTop(char &a)
{
if(!IsEmpty())
a = c[top];
else
return false;
return true;
}
bool IsEmpty()
{
return top == -1 ? true:false ;
}
bool IsFull()
{
return top == (maxSize-1) ? true:false ;
}
private:
char c[maxSize];
int top;
};
int isp(char a)
{
if(a == '#')
return 0;
if(a == '(')
return 6;
if(a == '*' || a == '/')
return 4;
if(a == '+' || a == '-')
return 2;
if(a == ')')
return 1;
return false;
}
int icp(char a)
{
if(a == '#')
return 0;
if(a == '(')
return 1;
if(a == '*' || a == '/')
return 5;
if(a == '+' || a == '-')
return 3;
if(a == ')')
return 6;
return false;
}
void main()
{
cout
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
奥巴马演讲不用看稿子.为什么中国领导演讲要看?
想找英语初三上学期的首字母填空练习……
英语翻译
最新试题
热门考点
- 1历史岳飞被秦桧害死了,秦桧是怎么死的?
- 2在第n电子层中,当它作为最外层时,容纳的电子数最多与n-1层相同;当它作为次外层
- 3若函数f(x)与g(x)=2-x互为反函数,则f(3+2x-x2)的单调递增区间是_.
- 4在定滑轮、动滑轮、滑轮组、斜面这些简单机械中,不能省力的是
- 5修一条路,第一天修了15km,第二天修了余下的五分之二,这时正好修了全场的一半,这条路全长多少米
- 6①一只手表的秒针长1.5厘米,针头5小时走过多长的路程?
- 7物体运动的速度也会发生改变,如何比较速度变化的快慢
- 8点到线的距离公式两个
- 9从材料看,司南至迟发明于什么时候?司南和指南针在哪些方面发挥了他的辨别方向的功能
- 10(-4a三次方+12a三次方b²)/(-4a²)