zoukankan      html  css  js  c++  java
  • 由中缀表达式计算前缀表达式

            算法思想:定义栈,从右向左扫描字符串,遇到运算符,则栈顶和次栈顶的元素出栈,计算结果入栈,重复上面的步骤,知道字符串扫描完毕。

    #include <iostream>
    #include <cstring>
    #define MAXSIZE 256
    using namespace std;
    typedef struct stack
    {
       int top;
       char stack[MAXSIZE];
    }Stack;
    void initStack(Stack *s)
    {
         s->top=0;
    }
    
    int getPrefixValue(Stack *s1,char s[])
    {
        int i=strlen(s);
        int temp1,temp2;
        int sum=0;
        char d;
        if(strlen(s)==0)
          {
                cout<<"中缀式不能为空."<<endl;
                return -1;
          }
         while(i>=0)
          {
               if(s[i-1]>='0'&&s[i-1]<='9')
                {
                  s1->top++;
                  s1->stack[s1->top]=s[i-1];
                }
               else
                {
                  temp1=s1->stack[s1->top]-'0';
                  s1->top--;
                  temp2=s1->stack[s1->top]-'0';
                  s1->top--;
                  switch(s[i-1])
                      {
                         case '+':sum=temp1+temp2;break;
                         case '-':sum=temp1-temp2;break;
                         case '*':sum=temp1*temp2;break;
                         case '/':sum=temp1/temp2;break;
                      }
                  s1->top++;
                  s1->stack[s1->top]=sum+'0';
                }
              i--;
          }
          d=s1->stack[s1->top];
          sum=d-'0';
          return sum;
    }
    
    int main()
    {
       Stack s1;
       char s[]="+-+7*345/62";
       int sum=0;
       initStack(&s1);
       cout<<"前缀式为:"<<s<<endl;
       sum=getPrefixValue(&s1,s);
       cout<<"结果求和为:"<<sum<<endl;
        return 0;
    }
    

      

      

    运行截图

  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/xshang/p/3368455.html
Copyright © 2011-2022 走看看