日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

Stack(栈 c++模版实现)

發(fā)布時(shí)間:2023/12/4 c/c++ 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。