我正在制作一个 C 程序,将中缀表达式转换为后缀表达式,其中显示不需要的符号而不是运算符
对于输入abc@#$^
,输出类似于(a+b+c)
。
我特此附上代码
//to convert infix expression to postfix expression
#include <stdio.h>
#include <conio.h>
#include <string.h>
void push(char);
char pop();
int is_operator(char);
int precedence(char);
char stack[100];
int top=-1;
void main()
{
int i=0,j=0,count;
char infix[100],item,x;
char postfix[100];
clrscr();
printf("Enter Infix String");
gets(infix);
count= strlen(infix);
for(i=0;i!=count;i++){
item=infix[i];
if(item=='('){
push(item);
}
else if((item>='A'&& item<='Z')||(item>='a' && item<='z')){
postfix[j]=item;
j++;
}else if(is_operator(item)==1){
x=pop();
if(precedence(x)>precedence(item)){
postfix[j]=x;
j++;
}
else{
push(item);
}
}else if(item==')'){
char a;
a=pop();
while(a!='('){
postfix[j]=a;
a=pop();
}
}else{
printf("Invalid Expression");
}
}
postfix[j]='\0';
printf("Postfix Expression\n");
puts(postfix);
getch();
}
void push(char a)
{
char y;
y=a;
top++;
stack[top]=y;
}
char pop()
{
char ch;
ch=stack[top];
top--;
return(ch);
}
int is_operator(char i)
{
if(i=='+'||i=='-'||i=='/'||i=='*'||i=='%'){
return(1);
}else{
return(0);
}
}
int precedence(char c)
{
if(c=='/'||c=='*'||c=='%'){
return(2);
}else if(c=='+'||c=='-'){
return(1);
}else{
return(0);
}
}