利用类模板实现一个简单的堆栈,支持数据压栈(push)和弹栈(pop)操作,要求至少支持 int、float、double。我要代码
时间: 2024-03-25 12:36:48 浏览: 80
栈类模板C++代码
4星 · 用户满意度95%
好的,根据您的要求,我为您提供以下实现堆栈的类模板代码:
```c++
#include <iostream>
using namespace std;
template <class T>
class Stack {
private:
T *stackArray; // 存储堆栈元素的数组
int top; // 栈顶指针
int maxSize; // 堆栈最大容量
public:
// 构造函数
Stack(int size = 100) {
stackArray = new T[size];
maxSize = size;
top = -1;
}
// 析构函数
~Stack() {
delete[] stackArray;
}
// 入栈操作
bool push(T value) {
if (top == maxSize - 1) {
cout << "Stack overflow!" << endl;
return false;
} else {
top++;
stackArray[top] = value;
return true;
}
}
// 出栈操作
bool pop(T &value) {
if (top == -1) {
cout << "Stack is empty!" << endl;
return false;
} else {
value = stackArray[top];
top--;
return true;
}
}
};
int main() {
// 声明一个 int 类型的堆栈
Stack<int> intStack(10);
// 入栈操作
intStack.push(10);
intStack.push(20);
intStack.push(30);
// 出栈操作
int value;
intStack.pop(value);
cout << "Pop value: " << value << endl;
intStack.pop(value);
cout << "Pop value: " << value << endl;
intStack.pop(value);
cout << "Pop value: " << value << endl;
// 声明一个 double 类型的堆栈
Stack<double> doubleStack(5);
// 入栈操作
doubleStack.push(3.14);
doubleStack.push(6.28);
doubleStack.push(9.42);
// 出栈操作
double doubleValue;
doubleStack.pop(doubleValue);
cout << "Pop value: " << doubleValue << endl;
doubleStack.pop(doubleValue);
cout << "Pop value: " << doubleValue << endl;
doubleStack.pop(doubleValue);
cout << "Pop value: " << doubleValue << endl;
return 0;
}
```
在上述代码中,我们使用类模板定义了一个 Stack 类,并在其中实现了入栈(push)和出栈(pop)操作。在 main 函数中,我们首先声明了一个 int 类型的堆栈,进行了入栈和出栈操作,并输出了结果;然后又声明了一个 double 类型的堆栈,进行了入栈和出栈操作,并输出了结果。
阅读全文