中序表达式转换为逆序表达式
#include <stdio.h>
#include <ctype.h>
#define MAXLENGTH 100
int stack[MAXLENGTH];
int top = -1;
void push(int x)
{
if(top < MAXLENGTH - 1)
stack[++top] = x;
}
int pop(void)
{
if(top >= 0)
return stack[top--];
}
int main()
{
int c;
while((c = getchar()) != EOF && c != '\n') {
if(isalnum(c))
putchar(c);
else if(c != ' ')
switch (c) {
case '+':
case '-':
while(top != -1 && stack[top] != '(')
putchar(pop());
push(c);
break;
case '*':
case '/':
while(top != -1 && stack[top] != '(' && stack[top] != '+' && stack[top] != '-')
putchar(pop());
push(c);
break;
case '(':
push(c);
break;
case ')':
while(top != -1 && stack[top] != '(')
putchar(pop());
pop();
break;
default:
break;
}
}
while(top != -1)
putchar(pop());
putchar('\n');
return 0;
}