C++用类模板写一个栈
#include <bits/stdc++.h>
using namespace std;
template <class Tclass>
class Tstack {
public:
void push(Tclass const &elem);
Tclass pop();
Tstack();
private:
Tclass elems[11111];
int top;
};
int main() {
try {
Tstack<int> ints;
ints.push(0);
ints.push(1);
ints.push(3);
cout<<ints.pop()<<endl;
cout<<ints.pop()<<endl;
cout<<ints.pop()<<endl;
Tstack<string> strings;
strings.push("Hello, World!");
cout<<strings.pop()<<endl;
Tstack<char> chars;
chars.push('@');
chars.push('#');
cout<<chars.pop()<<endl;
cout<<strings.pop()<<endl;
cout<<chars.pop()<<endl;
}
catch (const char *err) {
cerr<<"Error(main()):\t"<<err<<endl;
return -1;
}
return 0;
}
template <class Tclass>
void Tstack<Tclass>::push(Tclass const &elem) {
if (this->top >= 10000) throw "Tstack<Tclass>::push():overflow";
++ this->top;
this->elems[this->top] = elem;
return;
}
template <class Tclass>
Tclass Tstack<Tclass>::pop() {
if (this->top <= 1) throw "Tstack<Tclass>::pop():underflow";
-- this->top;
return this->elems[this->top + 1];
}
template <class Tclass>
Tstack<Tclass>::Tstack() {
this->top = 1;
return;
}
望点赞