c++堆栈类模板实现
时间: 2023-12-11 07:03:38 浏览: 40
好的,以下是一个简单的C++堆栈类模板实现:
```c++
template <typename T>
class Stack {
private:
T* data;
int top;
int capacity;
public:
Stack(int size = 100) {
data = new T[size];
top = -1;
capacity = size;
}
~Stack() {
delete[] data;
}
bool isEmpty() const {
return top == -1;
}
bool isFull() const {
return top == capacity - 1;
}
void push(const T& item) {
if (isFull()) {
throw "Stack is full!";
}
data[++top] = item;
}
T pop() {
if (isEmpty()) {
throw "Stack is empty!";
}
return data[top--];
}
};
```
相关问题
c++堆栈
C++中的堆栈(stack)是一种数据结构,它遵循后进先出(Last-In-First-Out,LIFO)的原则。在堆栈中,元素插入和删除只能发生在一端,称为栈顶。
C++标准库提供了一个内置的堆栈模板类,可以使用以下语句包含堆栈头文件:
```c++
#include <stack>
```
要创建一个堆栈,可以使用以下语句:
```c++
std::stack<int> myStack;
```
这将创建一个名为myStack的堆栈,其中存储整数类型的数据。
要将元素压入堆栈中,可以使用push()方法,例如:
```c++
myStack.push(10); // 将10压入堆栈中
myStack.push(20); // 将20压入堆栈中
```
要从堆栈中弹出元素,可以使用pop()方法,例如:
```c++
myStack.pop(); // 弹出栈顶元素20
```
要访问堆栈顶部的元素,可以使用top()方法,例如:
```c++
int topElement = myStack.top(); // 获取栈顶元素10
```
c++利用类模板实现一个简单的堆栈,支持数据压栈(push)和弹栈(pop)操作,要求 至少支持 int、float、double。
好的,以下是一个简单的堆栈类模板的实现,支持 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,并对它们进行了一些操作。