所以我有这个反向波兰符号程序,我必须为类做,要求用户提供后缀表达式。
例如,用户将输入 b + c d - *,最后的程序将其转换为
((a + b) * (c - d)) 但这不是我的问题。
所以我的问题是你如何将一个 b + c d - * 推送到一个完整的字符串中,一次一个元素到堆栈中。教授还说,当输入存储在字符串中时,每个元素之间都有一个空格。
输出看起来像一个 b + c d - * 占用一个堆栈。
我需要它是一个 b + c d - * 占用 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 Constructorn";
}
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);
}
这就是你所追求的吗?
int main()
{
string input;
cout<<"enter an input:";
while (cin>>input)
{
S.push(input);
}
}
解释:
cin >> input
将空格分隔的字符读入input
。表达式的返回值为 cin
。在布尔上下文(如while
循环测试)中,将测试cin
以查看上次读取是否失败。当输入被消耗时,最后一次读取将失败,因此循环将终止。
你在课堂上使用什么教科书?