c++自定义数据结构堆栈,名为Stack,包含基本操作:初始化,求长度,入栈,出栈,返回栈顶元素,清空并输出整个栈
时间: 2024-10-23 12:16:58 浏览: 22
在 C++ 中,我们可以创建一个自定义数据结构 `Stack`,它基于数组实现一个简单线性的堆栈。以下是一个基础的实现,包含了你提到的基本操作:
```cpp
#include <iostream>
using namespace std;
class Stack {
private:
int capacity; // 栈容量
int top; // 栈顶指针
int* data; // 存储元素的数组
public:
// 初始化堆栈,设置容量
Stack(int size) : capacity(size), top(-1), data(new int[capacity]) {}
// 检查是否已满
bool isFull() const { return top == capacity - 1; }
// 检查是否为空
bool isEmpty() const { return top == -1; }
// 入栈操作
void push(int value) {
if (isFull()) {
cout << "Stack overflow!" << endl;
return;
}
data[++top] = value;
}
// 出栈操作
int pop() {
if (isEmpty()) {
cout << "Stack underflow!" << endl;
return -1;
}
return data[top--];
}
// 返回栈顶元素
int peek() const {
if (isEmpty()) {
cout << "Stack is empty." << endl;
return -1;
}
return data[top];
}
// 清空堆栈并输出所有元素
void clearAndPrint() {
while (!isEmpty()) {
cout << pop() << " ";
}
cout << "\nStack is now empty.\n";
}
~Stack() { delete[] data; } // 析构函数释放内存
};
int main() {
Stack myStack(5);
myStack.push(10);
myStack.push(20);
cout << "Top element: " << myStack.peek() << endl;
myStack.pop();
myStack.clearAndPrint();
return 0;
}
```
在这个例子中,我们创建了一个 `Stack` 类,它有构造函数用于设置初始容量,`push()` 和 `pop()` 方法用于操作栈,`peek()` 查看栈顶元素而不会移动它,`clearAndPrint()` 方法用于清空并打印栈的所有内容。注意,这个实现没有异常处理,实际使用时可能会添加。
阅读全文