用c++编写一个通用堆栈类

writing a generic stack class in c++

本文关键字:一个 堆栈 c++      更新时间:2023-10-16

嗨,我不确定我的代码是否不正确,我在搜索中可以找到任何东西。

问题是:

用Java或C++为使用链表的堆栈类型编写一个名为Stack的泛型类以存储元素。Stack类有一个名为head的成员变量,该变量引用列表的第一个节点,以及一个名为size的成员变量,用于存储元素数在堆栈上。Stack类提供STL堆栈类的所有方法,包括推、弹、顶和空。

他们给出节点类

template <typename T>
class Node {
public:
T nodeValue;
Node<T> *next;
Node (const T& item, Node<T> *ptr = NULL):
nodeValue(item), next(ptr)
{}
};

现在这是我写的Stack类:

template <typename T>
class Stack:public std::stack<Node>
{
public:
    Node<T> *head;
    T size;
    Stack(const T& capacity, Node<T> *ptr):size(capacity),head(ptr){};
};

当我运行它时,我会得到这个:

error: type/value mismatch at argument 1 in template parameter list for ‘template<class _Tp, class _Sequence> class std::stack’   

当您将Nodestd::stack:一起使用时,至少您应该实例化它

template <typename T>
class Stack : public std::stack<Node<T> >
                                 // ^^^
{
];