标签:std stack turn class head har 转化 || continue
#include<stdio.h> #include<string.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; }
逆波兰
标签:std stack turn class head har 转化 || continue
原文地址:https://www.cnblogs.com/WhiteThornZzf/p/12347912.html