C++栈类模板

template <class T, int SIZE = 50>
class Stack {
private:
    T list[SIZE];   //数组,用于存放栈的元素
    int top;    //栈顶位置(数组下标)
public:
    Stack();    //构造函数
template <class T, int SIZE = 50>
class Stack {
private:
    T list[SIZE];   //数组,用于存放栈的元素
    int top;    //栈顶位置(数组下标)
public:
    Stack();    //构造函数,初始化栈
    void push(const T &item);   //将元素item压入栈
    T pop();    //将栈顶元素弹出栈
    void clear();   //将栈清空
    const T &peek() const;  //访问栈顶元素
    bool isEmpty() const;   //测试是否栈满
    bool isFull() const;    //测试是否栈空
};

//模板的实现
template <class T, int SIZE>
Stack<T, SIZE>::Stack() : top(-1) { } //构造函数,栈顶初始化为-1

template <class T, int SIZE>
void Stack<T, SIZE>::push(const T &item) {    //将元素item压入栈
    assert(!isFull());  //如果栈满了,则报错
    list[++top] = item; //将新元素压入栈顶
}

template <class T, int SIZE>
T Stack<T, SIZE>::pop() { //将栈顶元素弹出栈
    assert(!isEmpty()); //如果栈为空,则报错
    return list[top--]; //返回栈顶元素,并将其弹出栈顶
}

template <class T, int SIZE>
const T &Stack<T, SIZE>::peek() const {   //访问栈顶元素
    assert(!isEmpty()); //如果栈为空,则报错
    return list[top];   //返回栈顶元素
}

template <class T, int SIZE>
bool Stack<T, SIZE>::isEmpty() const {    //测试栈是否空
    return top == -1;
}

template <class T, int SIZE>
bool Stack<T, SIZE>::isFull() const { //测试是否栈满
    return top == SIZE - 1;
}

template <class T, int SIZE>
void Stack<T, SIZE>::clear() {    //清空栈
    top = -1;
}

,初始化栈 void push(const T &item); //将元素item压入栈 T pop(); //将栈顶元素弹出栈 void clear(); //将栈清空 const T &peek() const; //访问栈顶元素 bool isEmpty() const; //测试是否栈满 bool isFull() const; //测试是否栈空};//模板的实现template <class T, int SIZE>Stack<T, SIZE>::Stack() : top(-1) { } //构造函数,栈顶初始化为-1template <class T, int SIZE>void Stack<T, SIZE>::push(const T &item) { //将元素item压入栈 assert(!isFull()); //如果栈满了,则报错 list[++top] = item; //将新元素压入栈顶}template <class T, int SIZE>T Stack<T, SIZE>::pop() { //将栈顶元素弹出栈 assert(!isEmpty()); //如果栈为空,则报错 return list[top--]; //返回栈顶元素,并将其弹出栈顶}template <class T, int SIZE>const T &Stack<T, SIZE>::peek() const { //访问栈顶元素 assert(!isEmpty()); //如果栈为空,则报错 return list[top]; //返回栈顶元素}template <class T, int SIZE>bool Stack<T, SIZE>::isEmpty() const { //测试栈是否空 return top == -1;}template <class T, int SIZE>bool Stack<T, SIZE>::isFull() const { //测试是否栈满 return top == SIZE - 1;}template <class T, int SIZE>void Stack<T, SIZE>::clear() { //清空栈 top = -1;}

猜你喜欢

转载自blog.csdn.net/Kazaki_X/article/details/80807003