c++利用类模板实现一个简单的堆栈,支持数据压栈(push)和弹栈(pop)操作,要求 至少支持 int、float、double。
时间: 2024-03-25 08:38:53 浏览: 142
堆栈类的实现(C++源代码)
好的,以下是一个简单的堆栈类模板的实现,支持 int、float、double 三种数据类型:
```c++
#include <iostream>
using namespace std;
template <typename T>
class Stack {
private:
T* data;
int size;
int top;
public:
Stack(int size = 100) : size(size), top(-1) {
data = new T[size];
}
~Stack() {
delete[] data;
}
void push(T x) {
if (top == size - 1) {
cout << "Stack is full!" << endl;
return;
}
data[++top] = x;
}
T pop() {
if (top == -1) {
cout << "Stack is empty!" << endl;
return T();
}
return data[top--];
}
};
int main() {
Stack<int> s1(10);
s1.push(10);
s1.push(20);
s1.push(30);
cout << s1.pop() << endl;
cout << s1.pop() << endl;
cout << s1.pop() << endl;
Stack<float> s2(10);
s2.push(1.1);
s2.push(2.2);
s2.push(3.3);
cout << s2.pop() << endl;
cout << s2.pop() << endl;
cout << s2.pop() << endl;
Stack<double> s3(10);
s3.push(1.1);
s3.push(2.2);
s3.push(3.3);
cout << s3.pop() << endl;
cout << s3.pop() << endl;
cout << s3.pop() << endl;
return 0;
}
```
以上代码中,我们使用了类模板来定义 Stack 类,它包含了 push 和 pop 两个方法,分别用于压栈和弹栈操作。在构造函数中,我们可以指定堆栈的大小。在 push 方法中,我们首先检查是否已经满栈,然后将元素 x 压入堆栈顶部;在 pop 方法中,我们首先检查堆栈是否为空,然后将堆栈顶部元素弹出并返回。
在主函数中,我们创建了三个不同类型的堆栈对象 s1、s2、s3,并对它们进行了一些操作。
阅读全文