C ++中的修复后计算器 - >如何操作堆栈中的元素(动态数组)

时间:2014-10-26 22:42:45

标签: c++ arrays stack calculator postfix-notation

_ 嘿那里 - 自从我被困之后第一次在这里问一个问题:

我被要求在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);将它们推到堆栈中,直到我收到一个运算符,我将使用顶部整数从第二个到顶部整数,然后弹出这两个元素,然后将结果向下推送到堆栈。

为了完成这项工作,我必须能够获得数组的顶部元素和第二个顶部元素,但到目前为止我尝试的所有内容都会导致错误。

任何帮助将不胜感激

0 个答案:

没有答案