用C语言编程将中缀表达式变为先缀表达式 在线等

来源:百度知道 编辑:UC知道 时间:2024/05/09 08:59:18
表达式有三种表达形式:先缀表示法、中缀表示法及后缀表示法。例如:某表达式的先缀表示法是:-X+abc/de。
本实验只考虑二元运算符的情况。即:
表达式 =(第一操作数)(运算符)(第二操作数)
我们把运算符看作是根结点,其左右子树就是第一操作数和第二操作数:
先缀表示法或后缀表示法实际上就是这样的二叉树先序或后序遍历的结果序列。
本实验是将输入的一个自然运算表达式形式,建立其先缀表达式对应的二叉树。输出的结果是这棵二叉树的先序遍历结果
比如:对于输入是“(a+b)Xc-d/e”,输出结果:-X+abc/de

在线等,做出加分,从网站复制的就别来帖了!谢谢
就是输入字符a,b,c,不用数字代替

呵呵
刚好做过
我做的是表达式求值
#include<iostream.h>
#define MAXSIZE 100
int i,j=0;
struct STACK
{ char stack[MAXSIZE];
int top;
} ;
void Initstack(struct STACK &s)
{
s.top= -1; //设置栈顶指针top,表示栈空
}
void push(struct STACK &s, char x)
{ if (s.top>=MAXSIZE-1)
cout<<" ERROR"; //栈满,上溢
else { s.top++;
s.stack[s.top]=x;
}
} //push
char pop(struct STACK &s, char &e)
{ if (s.top<0){
cout<<" ERROR";
return ('0');
} //栈空,下溢
else { e= s.stack[s.top];
s.top--;
return e;
}
} // pop
char gettop(struct STACK &s,char &e)
{ if (s.top<0){
cout<<" ERROR";
retur