算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。
输入格式:
输入在一行中给出不含空格的中缀表达式,可包含+、-、*、\以及左右括号(),表达式不超过20个字符。
输出格式:
在一行中输出转换后的后缀表达式,要求不同对象(运算数、运算符号)之间以空格分隔,但结尾不得有多余空格。
输入样例:
2+3*(7-4)+8/4
输出样例:
2 3 7 4 - * + 8 4 / +
参考代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct snode *stack;
struct snode{
char ch[20];
int top;
};
stack CreateStack(); //创建堆栈
void push(stack s,char c); //入栈
char pop(stack s); //出栈
int main()
{
char ch1[150]; //用来存储符号优先级
ch1['(']=0;
ch1['+']=1;
ch1[&#