Stack(栈 c++模版实现)
生活随笔
收集整理的這篇文章主要介紹了
Stack(栈 c++模版实现)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Stack(棧 c++模版實(shí)現(xiàn))
// // Created by XXX on 2021/7/10. //#ifndef C11LEARN_STACK_H #define C11LEARN_STACK_H template<typename T> class Stack{ private:int capacity;int top;T *array; public:Stack(int capacity = 50);Stack(const Stack<T>& stack);Stack<T>& operator=(const Stack<T> stack);virtual ~Stack();bool empty();void push(const T element);T pop();bool remove(const T key);bool contain(const T &key);int size() const; }; template<typename T> Stack<T>::Stack(int capacity):capacity(capacity){if(this->capacity<=0)capacity = 50;array = new T[capacity];top = -1; } template<typename T> Stack<T>::Stack(const Stack<T>& stack){capacity = stack.capacity;array = new T[capacity];for (int i = 0; i < capacity; ++i) {array[i]=stack.array[i];}top = stack.top; } template<typename T> Stack<T>& Stack<T>::operator=(const Stack<T> stack) {if(array!= nullptr)delete[] array;capacity = stack.capacity;array = new T[capacity];for (int i = 0; i < capacity; ++i) {array[i]=stack.array[i];}top = stack.top;return *this; } template<typename T> Stack<T>::~Stack(){delete[] array; } template<typename T> bool Stack<T>::empty(){return top == -1; } template<typename T> void Stack<T>::push(const T element){top = top+1;if(top>= capacity){capacity *=2;T *array_temp = new T[capacity];for (int i = 0; i < top; ++i) {array_temp[i] = array[i];}delete[] array;array = array_temp;}array[top] = element; } template<typename T> bool Stack<T>::remove(const T key){int index = -1;for (int i = 0; i <= top; ++i) {if(array[i] == key){index = i;}}if(index == -1)return false;for (int i = index; i < top; ++i) {array[i] = array[i+1];}top--;return true; } template<typename T> bool Stack<T>::contain(const T &key){for (int i = 0; i <= top; ++i) {if(array[i] == key)return true;}return false; } template<typename T> T Stack<T>::pop() {if(empty()){throw "underflow";}else{top -- ;return array[top+1];} } template<typename T> int Stack<T>::size() const{return top+1; } #endif //C11LEARN_STACK_H總結(jié)
以上是生活随笔為你收集整理的Stack(栈 c++模版实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Steam 客户端正式支持索尼 Dual
- 下一篇: Queue(队列 C++模版实现)