C++关于模版的有关问题

C++关于模版的问题
下边这题怎么写啊,求大侠帮忙!!!


根据整数栈的定义,可抽象出的栈类模板为:
template<class T>
class Stack{
public:
  Stack();
  ~Stack();
  void Push(T& n);
  T Pop();
private:
  static const int SIZE;
  T* stack;
  int tos;
};
这里需要将该模板中的各成员函数进行定义即可。tos是栈顶位置,Push()为压栈操作,Pop()为弹栈操作,要在这两个操作中分别考虑栈的长度和栈是否为空。最后,要在main函数中对编写的栈类模板进行测试。

------解决方案--------------------
类似代码很多的。。自己GOOGLE一下不就完了。。

我随便写了个链栈,最简化的,你可以参考下。

C/C++ code
template <typename T>
class StackWithLi
{
private:
    struct StackNode
    {
        T data;
        StackNode *next;

        StackNode(const T &d , StackNode *const n): data(d) , next(n){}
    };
    StackNode *top;

public:
    StackWithLi() : top(0){}
    void push(const T &);
    T pop();
    bool isEmpty(){ return top == nullptr ;}
};

template <typename T>
T StackWithLi<T>::pop()
{
    if (isEmpty())
    {
        cout<<"The stack is empty!"<<endl;
        exit(0);
    }
    else
    {
        StackNode *p = top;
        T temp = top->data;
        top = top->next;
        delete p;
        return temp;
    }
}

template <typename T>
void StackWithLi<T>::push( const T &d )
{
    StackNode *node = new StackNode(d , top);
    top = node;
}

------解决方案--------------------
就像一楼所说的,注意两点就行了:
一是函数前面要template<typename T> 
二是类型名是Stack<T>

像你这种有个static const int SIZE的,不如将SIZE当作非类型的模板参数,定义
template<typename T, int SIZE>
class Stack {
//....
};
这样可能更好。
------解决方案--------------------
探讨

类似代码很多的。。自己GOOGLE一下不就完了。。

我随便写了个链栈,最简化的,你可以参考下。

C/C++ code
template <typename T>
class StackWithLi
{
private:
struct StackNode
{
T data;
StackNode *next;

Stack……