调度场算法&&中缀表达式=>后缀表达式

2021-03-02 04:27

阅读:392

标签: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


评论


亲,登录后才可以留言!