_ 嘿那里 - 自从我被困之后第一次在这里问一个问题:
我被要求在C ++中创建一个后期修复(堆栈)计算器,我打算在堆栈中存储整数,直到给出一个运算符(+, - ,*,/)之后它会弹出给出了运算符的最后2个整数。 我知道在C ++中存在一个带有#include<的堆栈函数。堆栈> ,但我得到了以下代码:
#include <stdio.h>
template <class T> class node
{
public:
node();
node(T);
T value;
node<T>*next;
};
template<class T>node<T>::node()
{
value=0;
next=0;
}
template<class T>node<T>::node(T t)
{
value=t;
next=0;
}
和基于node.h的Stack类头
#include"node.h"
template <class T>class stack
{
public:
stack();
void push(T);
T pop();
protected:
int count;
node<T>*head;
};
template<class T>stack<T>::stack()
{
count=0;
head=0;
}
template<class T> void stack<T>::push(T x)
{
node<T> *u = new node<T>(x);
u->next = head;
head = u;
count++;
}
template<class T> T stack<T>::pop()
{
T x;
node<T> *u;
if (count == 0)
return x;
x = head->value;
u = head;
head = head->next;
delete u;
count--;
return x;
}
现在理论上,我用stack<int> stacky;
创建了一个名为stacky的整数堆栈
那么我将通过std::cin >> x;
得到整数输入,其中x是无限循环内的int,我将通过stacky.push(x);
将它们推到堆栈中,直到我收到一个运算符,我将使用顶部整数从第二个到顶部整数,然后弹出这两个元素,然后将结果向下推送到堆栈。
为了完成这项工作,我必须能够获得数组的顶部元素和第二个顶部元素,但到目前为止我尝试的所有内容都会导致错误。
任何帮助将不胜感激