首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >后缀-expression求值

后缀-expression求值
EN

Stack Overflow用户
提问于 2011-11-23 15:52:28
回答 2查看 2.2K关注 0票数 1

我正在尝试实现后缀表达式求值,以下是我的代码:

代码语言:javascript
运行
复制
#include<iostream>
#include<string.h>
using namespace std;
template < class T > class Stack {
private:
    T * s;
    int n;
public:
    Stack(int maxn) {
        s = new T[maxn];
        n = 0;
    }
    int empth() const {
        return n == 0;
    }
    void push(T item) {
        s[n++] = item;
    }
    int pop() {
        return s[--n];
    }
};

int main()
{
    string a = "598+46**7+*";
    int n = a.length();
    Stack < int >save(n);
    for (int i = 0; i < n; i++) {
        if (a[i] == "+")
            save.push(save.pop() + save.pop());
        if (a[i] == "*")
            save.push(save.pop() * save.pop());
        if ((a[i] >= '0') && (a[i] <= '9'))
            save.push(0);
        while ((a[i] >= '0') && (a[i] <= '9'))
            save.push(10 * save.pop() + (a[i++] - '0'));
    }

    cout << save.pop() << endl;

    return 0;
}

但是我得到了一个编译错误(我在linux (ubuntu 11.10)中实现它):

代码语言:javascript
运行
复制
postfix.cpp:35:13: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
postfix.cpp:37:10: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]

我该如何解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-23 15:55:07

代码语言:javascript
运行
复制
for(int  i=0;i<n;i++){
  if(a[i]=="+")
    save.push(save.pop()+save.pop());
  if(a[i]=="*")

在比较字符时,需要使用单引号

代码语言:javascript
运行
复制
for(int  i=0;i<n;i++){
  if(a[i]=='+')
    save.push(save.pop()+save.pop());
  if(a[i]=='*')
票数 5
EN

Stack Overflow用户

发布于 2017-05-21 15:49:33

下面是计算后缀表达式的link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8238784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档