c++使用类模板实现一个栈类
时间: 2024-03-10 11:47:34 浏览: 66
用c++的类模板实现通用堆栈结构
好的,以下是一个基于类模板实现的栈类的示例代码:
```c++
template <typename T>
class Stack {
private:
T* stackArray; // 存储栈元素的数组
int top; // 栈顶元素的下标
int capacity; // 栈的容量
public:
// 构造函数,创建一个空栈
Stack(int capacity = 10) {
this->capacity = capacity;
stackArray = new T[capacity];
top = -1;
}
// 析构函数,释放内存
~Stack() {
delete[] stackArray;
}
// 判断栈是否为空
bool isEmpty() {
return top == -1;
}
// 判断栈是否已满
bool isFull() {
return top == capacity - 1;
}
// 入栈操作
void push(T element) {
if (isFull()) {
cout << "Stack overflow!" << endl;
return;
}
stackArray[++top] = element;
}
// 出栈操作
T pop() {
if (isEmpty()) {
cout << "Stack underflow!" << endl;
return T();
}
return stackArray[top--];
}
// 获取栈顶元素
T getTop() {
if (isEmpty()) {
cout << "Stack is empty!" << endl;
return T();
}
return stackArray[top];
}
// 获取栈的元素个数
int size() {
return top + 1;
}
};
```
这个类模板实现了一个基本的栈数据结构,其中元素类型为模板参数T,可以根据实际需要进行实例化。使用示例:
```c++
Stack<int> s(5); // 创建一个容量为5的整型栈
s.push(1);
s.push(2);
s.push(3);
cout << s.pop() << endl; // 输出3
cout << s.getTop() << endl; // 输出2
cout << s.size() << endl; // 输出2
```
注意,这里的栈容量是在构造函数中指定的,如果不指定则默认为10。在入栈操作中,如果栈已满则会输出一条错误信息并返回。在出栈操作中,如果栈为空则同样会输出一条错误信息并返回一个默认值。
阅读全文