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;
    }
    

      

      

    运行截图

  • 相关阅读:
    Python的浅拷贝与深拷贝
    Python:正则表达式的一些例子
    Python的垃圾回收机制
    http和https的区别与联系
    python数据结构之动态数组
    Python:fromkeys()方法
    Python:zip()函数
    算法概念
    Python面向对象:获取对象信息
    Dubbo Configuration
  • 原文地址:https://www.cnblogs.com/xshang/p/3368455.html
Copyright © 2011-2022 走看看