#pragma once#include<vector>template<classT,int capacity =30>classStack{public:Stack(){
pool.reserve(capacity);}voidclear(){
pool.clear();}
T&topEL(){return pool.back();}
T pop(){
T val = pool.back();
pool.pop();return val;}voidpush(const T &val){
pool.push_back(val);}private:
std::vector<T> pool;};
隊列
#pragma once#include<vector>template<classT,int size =60>classMyqueue{public:Myqueue(){
q = std::vector<T>(size);
first = last =-1;}voidpush(T);
T pop();boolisFull(){return(first ==0&& last == size -1)|| first == last +1;}boolisEmpty(){return first ==-1;}private:
std::vector<T> q;int first, last;};template<classT,int size>void Myqueue<T,size>::push(T val){if(!isFull()){if(last==size-1|| last==-1){
q[0]= val;
last =0;if(first ==-1) first =0;}else{
q[++last]= val;}}else{
std::cout <<"Full"<< std::endl;}}template<classT,int size>
T Myqueue<T, size>::pop(){if(!isEmpty()){
T val = q[first];if(first==last){
first = last =-1;}elseif(first==size-1){
first =0;}else{
first++;}return val;}}