c++利用类模板实现一个简单的堆栈,支持数据压栈(push)和弹栈(pop)操作,要求 至少支持 int、float、double。
时间: 2024-02-27 08:58:49 浏览: 66
堆栈类的实现(C++源代码)
可以使用类模板来实现一个简单的堆栈,下面是一份示例代码:
```c++
#include <iostream>
using namespace std;
template <typename T>
class Stack {
private:
T *arr; // 存储数据的数组
int top; // 栈顶指针
int capacity; // 栈的容量
public:
Stack(int size = 100) { // 构造函数
capacity = size;
arr = new T[capacity];
top = -1;
}
~Stack() { // 析构函数
delete[] arr;
}
void push(T data) { // 入栈操作
if (top == capacity - 1) {
cout << "Stack Overflow" << endl;
return;
}
arr[++top] = data;
}
T pop() { // 出栈操作
if (top == -1) {
cout << "Stack Underflow" << endl;
return T();
}
return arr[top--];
}
};
int main() {
Stack<int> intStack(5);
intStack.push(10);
intStack.push(20);
intStack.push(30);
cout << intStack.pop() << endl;
Stack<float> floatStack(5);
floatStack.push(1.2f);
floatStack.push(2.3f);
floatStack.push(3.4f);
cout << floatStack.pop() << endl;
Stack<double> doubleStack(5);
doubleStack.push(1.23);
doubleStack.push(2.34);
doubleStack.push(3.45);
cout << doubleStack.pop() << endl;
return 0;
}
```
在这个示例中,我们定义了一个 Stack 类模板,它支持 int、float、double 类型的数据。Stack 类有一个私有成员变量 arr,它是存储数据的数组,还有一个 top 指针,它指向当前栈顶的位置。Stack 类有一个构造函数,可以指定栈的容量,如果不指定,则默认为 100;还有一个析构函数,用来释放存储数据的数组。Stack 类还有两个公有成员函数,push 和 pop,分别用于将数据入栈和出栈。在 push 函数中,如果栈已满,则输出 "Stack Overflow";在 pop 函数中,如果栈为空,则输出 "Stack Underflow"。
在 main 函数中,我们分别使用 int、float、double 类型的 Stack 对象,并进行了一些入栈和出栈操作,最后输出了每个栈的栈顶元素。
阅读全文