📄 ep7_8_1.cpp
字号:
/*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;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -