全部数据结构、算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360
栈的特点:先进后出,只可对栈顶操作
顺序栈模板如下:
#pragma GCC optimize("Ofast") #include <bits/stdc++.h> using namespace std; template<class T> class ArrayStack{ private: int maxSize,top; T *sk; public: ArrayStack(int size=0):maxSize(size),top(-1),sk(new T[maxSize]){} ~ArrayStack(){delete[] sk;} void Clear(){top=-1;} bool Push(const T item){ if(top==maxSize-1){ cout<<"栈满溢出!"<<endl; return 0; } sk[++top]=item; return 1; } bool Pop(T &item){ if(top==-1){ cout<<"栈为空!不能进行删除操作!"<<endl; return 0; } item=sk[top--]; return 1; } bool Top(T &item){ if(top==-1){ cout<<"栈为空!不能读取栈顶元素!"<<endl; return 0; } item=sk[top]; return 1; } bool betterPush(const T item); }; //改良版push如下,若要溢出,就把空间扩大二倍然后接着push template<class T> bool ArrayStack<T>::betterPush(const T item){ if(top==maxSize-1){ T *newSk=new T[maxSize*=2]; for(int i=0;i<=top;i++) newSk[i]=sk[i]; delete[] sk; sk=newSk; } sk[++top]=item; return 1; }
