标签:实现 top DataType template 简单 push data Stack
using namespace std;
const int MAX_SIZE = 100;
template<class DataType>
class Stack {
private:
DataType *data;
int size;
int top;
public:
Stack();
Stack(int len);
~Stack();
void push(DataType ch);
DataType pop();
DataType getTop();
bool isEmpty();
bool isFull();
void setNull();
class Full{};
class Empty{};
};
template<class DataType>
Stack<DataType>::Stack() {
data = new DataType[MAX_SIZE];
size = MAX_SIZE;
top = -1;
}
template<class DataType>
Stack<DataType>::Stack(int len) {
data = new DataType[len];
size = len;
top = -1;
}
template<class DataType>
Stack<DataType>::~Stack() {
delete [] data;
}
template<class DataType>
void Stack<DataType>::push(DataType ch) {
if (isFull()) {
throw Stack<DataType>::Full();
} else {
data[++top] = ch;
}
}
template<class DataType>
DataType Stack<DataType>::pop() {
if (isEmpty()) {
throw Stack<DataType>::Empty();
} else {
return data[top--];
}
}
template<class DataType>
DataType Stack<DataType>::getTop() {
if (isEmpty()) {
throw Stack<DataType>::Empty();
} else {
return data[top];
}
}
template<class DataType>
bool Stack<DataType>::isEmpty() {
return top == -1;
}
template<class DataType>
bool Stack<DataType>::isFull() {
return top == size -1;
}
template<class DataType>
void Stack<DataType>::setNull() {
top = -1;
}
int main()
{
Stack<char> s(2);
try {
s.push('a');
s.push('b');
s.push('c');
} catch (Stack<char>::Full) {
cout << "Stack<char> Full !!" << endl;
}
Stack<double> s2(2);
try {
s2.push(99.99);
s2.push(88.88);
s2.push(77.77);
} catch (Stack<double>::Full) {
cout << "Stack<double> Full !!" << endl;
}
return 0;
}
标签:实现,top,DataType,template,简单,push,data,Stack 来源: https://www.cnblogs.com/lsxj/p/16093915.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。