ep7_8_1.cpp
上传用户:wxcui2006
上传日期:2022-07-12
资源大小:1274k
文件大小:1k
- /*7.8 修改顺序栈类,当栈满时,执行StackFull()操作;动态创建一个是原来的栈空间的两倍的空间,
- 把原来栈中的内容放入新栈,再删除原栈空间。这是C++标准模板库中的做法。
- 在这里的第2种方法中采用类似STL中栈适配器的做法,顺序表作为栈的成员对象,采用聚合技术。
- */
- #include"ep7_8_1.h"
- template<typename T>class Stack{
- seqlist<T> stack;
- public:
- Stack(int maxs=20):stack(maxs){}; //栈如不指定大小,设为20元素
- ~Stack(){}
- void Push(const T &data){stack.Push_back(data);} //压栈
- T Pop(){return stack.Pop_back();} //弹出
- T GetElem(int i){return stack.GetElem(i);} //取数据
- bool IsEmpty() const{return stack.IsEmpty();} //判栈空
- bool IsFull() const{return stack.IsFull();} //判栈满
- void PrintStack(){stack.Printseqlist();} //输出栈内所有数据
- };
- int main(){
- int i,a[25]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24},b[25];
- Stack<int> istack(5);
- for(i=0;i<25;i++) istack.Push(a[i]);
- istack.PrintStack();
- i=0;
- while(!istack.IsEmpty()){
- b[i]=istack.Pop();
- i++;
- }
- if(istack.IsEmpty()) cout<<"栈空"<<endl;
- for(i=0;i<25;i++) cout<<b[i]<<'t'; //注意先进后出
- cout<<endl;
- return 0;
- }