常用模板类设计
1
【简答题】
#include <iostream>
using namespace std;
template <class T>
class Stack{
T *v; // 栈底
T *p; // 栈顶
int sz; // 栈的大小
public:
Stack(int s){ v=p=new T[sz=s];}
~Stack() { delete[ ] v;}
void push(T a) { *p++ = a;};
T pop() { return * -- p ;}
int size() const { return p-v; }
};
int main()
{ int i,t;
char x;
Stack<char> sch(20);
Stack<int> sint(10);
for (i= 0; i< 10 ; i++){
sint.push(i+1);
}
for(i=0;i<20;i++) {
sch.push('*');
}
// …
for (i= 10; i>0 ; i--){
if((t=sint.pop())!=i) { cout<<"error"; } else cout<<t;
}
for(i=0;i<20;i++) {
if((x=sch.pop())!='*') { cout<<"error";} else cout<<x;
}
return 0;
}
上述代码是“栈”模板类的基础示例,请大家为该模板类增加void deleteAt(int i)函数(在类体外部实现),该函数功能是删除栈中存放的第i 个元素(从栈底开始数,i 如果越界则提示i 越界,直接返回).并在main函数中测试该函数功能。