后缀表达式←百度直达;
后缀表达式转换为中缀表达式←代码示例
3 6 6 2 / - 3 * +#
--------------------------------
12
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
using namespace std;
typedef struct node
{
char data[1005];
int top;
}Stack;
void createStack(Stack *&a)
{
a=(Stack *)malloc(sizeof(Stack));
a->top=-1;
}
void push(Stack *&a,int e)
{
a->top++;
a->data[a->top]=e;
}
int pop(Stack *&a)
{
int e=a->data[a->top];
a->top--;
return e;
}
void calculate(Stack *&a,char str)
{
int data1,data2;
data1=pop(a);
data2=pop(a);
switch(str)
{
case'+':data1+=data2;push(a,data1);break;
case'-':data1=data2-data1;push(a,data1);break;
case'*':data1*=data2;push(a,data1);break;
case'/':if(data1)
{
data1=data2/data1;push(a,data1);break;
}
}
}
int main()
{
Stack *a;
createStack(a);
char str;
while(cin>>str && str!='#')
{
if(str==' ') continue;
if(str>='0' && str<='9')
{
int k=str-'0';
push(a,k);
}
else
calculate(a,str);
}
printf("%d",a->data[0]);
return 0;
}