+ -
当前位置:首页 → 问答吧 → C++关于模版的问题

C++关于模版的问题

时间:2011-12-11

来源:互联网

下边这题怎么写啊,求大侠帮忙!!!


根据整数栈的定义,可抽象出的栈类模板为:
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函数中对编写的栈类模板进行测试。

作者: q243021856   发布时间: 2011-12-11

类似代码很多的。。自己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;
}

作者: LinuxTiger   发布时间: 2011-12-11