调度场算法&&中缀表达式=>后缀表达式
标签:std stack turn class head har 转化 || continue
#include
#includestring.h>
int main(void){
char ch,stro[1001],stack[1001];
int numstack[1001];
int top=-1,head=-1;
/*************************************************/
/*将中缀表达式转化为后缀表达式*/
while((ch=getchar())!=EOF){
if(ch==‘ ‘) continue;
else if(ch‘9‘&&ch>=‘0‘)
stro[++head]=ch;
else if(ch==‘+‘||ch==‘-‘){
if(top==-1)
stack[++top]=ch;
else{
while(true){
if(stack[top]==‘+‘||stack[top]==‘-‘){
stro[++head]=stack[top];
top--;
}else{
stack[++top]=ch;
break;
}
}
}
}else if(ch==‘(‘){
stack[++top]=ch;
}else if(ch==‘)‘){
while(true){
if(stack[top]!=‘(‘){
stro[++head]=stack[top];
top--;
}else{
top--;
break;
}
}
}
}
while(top>=0){
stro[++head]=stack[top];
top--;
}
stro[++head]=‘\0‘;
/*************************************************/
/*转化结束*/
/*开始计算*/
top=-1;
for(int i=0;stro[i]!=‘\0‘;i++){
if(stro[i]‘9‘&&stro[i]>=‘0‘)
numstack[++top]=stro[i]-‘0‘;
else if(stro[i]==‘+‘){
numstack[top-1]+=numstack[top];
top--;
}else if(stro[i]==‘-‘){
numstack[top-1]-=numstack[top];
top--;
}
}
printf("%d",numstack[0]);
return 0;
}
逆波兰
后缀表达式,soscw.com" target="_blank">调度场算法&&中缀表达式=>后缀表达式
标签:std stack turn class head har 转化 || continue
原文地址:https://www.cnblogs.com/WhiteThornZzf/p/12347912.html
评论