C++栈类模板

xiaoxiao2021-02-28  25

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;}
转载请注明原文地址: https://www.6miu.com/read-1650055.html

最新回复(0)