1

所以我有这个反向波兰符号程序我必须为要求用户提供后缀表达式的类做。

例如,用户输入 ab + cd - * ,最后的程序将其转换为

((a + b) * (c - d)) 但这不是我的问题。

所以我的问题是你如何将 ab + cd - * 这是一个完整的字符串,一次一个元素推入堆栈。教授还说,输入存储在字符串中时,每个元素之间都有一个空格。

输出看起来像 ab + cd - * 占用一个堆栈。

我需要它是 ab + cd - * 占用 7 个堆栈。

我在类中有一些基本代码用作编写程序的骨架,如果可能的话想修改它以适应我的需要。

#include <iostream>
#include <string>

using namespace std;

typedef string stack_element;

class stack_node
{
    public:
    stack_element data;
    stack_node *next;
};

class stack
{
    public:
    stack();
    ~stack();
    stack_element & top();
    void pop();
    void push(const stack_element &);
    void print();

    private:
    stack_node *s_top;
};

stack::stack()
{
    s_top=0;
    cout<<"Inside Default Constructor\n";
}

void stack::push(const stack_element & item)
{
    cout<<"Inside push \n";
    stack_node *p = new stack_node;

    p->data = item;
    p->next = 0;

    if (s_top == 0)
    {
        s_top = p;
    }
    else
    {
        p->next = s_top;
        s_top = p;
    }
}

int main()
{
    string input;
    cout<<"enter an input:";
    cin>>input;
    S.push(input);
}
4

1 回答 1

1

这就是你所追求的吗?

int main()
{
    string input;
    cout<<"enter an input:";
    while (cin>>input)
    {
        S.push(input);
    }
}

解释:

cin >> input将空格分隔的字符读入input. 表达式的返回值为cin。在布尔上下文中,例如while循环测试,cin会测试最后一次读取是否失败。当输入被消耗时,最后一次读取将失败,因此循环将终止。

你用什么课本来上课?

于 2013-10-28T19:09:20.007 回答