用c++语言完成栈的初始化,入栈,出栈,取栈项判断栈是否为空,并将栈打印栈。
时间: 2024-10-31 10:08:28 浏览: 16
在 C++ 中,我们可以使用数组或动态内存分配(如 `std::vector` 或自定义 `stack` 类)来实现栈的数据结构。这里我将给出使用数组实现基本栈操作的例子:
```cpp
#include <iostream>
using namespace std;
#define MAX_SIZE 10 // 栈的最大容量
class Stack {
private:
int top; // 栈顶指针
int data[MAX_SIZE]; // 存储数据的数组
public:
Stack() { // 构造函数,初始化栈顶指针为 -1 表示空栈
top = -1;
}
// 入栈(push)
void push(int value) {
if (top >= MAX_SIZE - 1) {
cout << "Stack overflow!" << endl;
return;
}
data[++top] = value;
cout << "Pushed " << value << " to the stack." << endl;
}
// 出栈(pop)
void pop() {
if (top == -1) {
cout << "Stack is empty!" << endl;
return;
}
top--;
cout << "Popped value from the stack: " << data[top] << endl;
}
// 取栈顶元素(peek),不真正移除元素
int peek() const {
if (top == -1) {
cout << "Stack is empty!" << endl;
return -1; // 返回一个默认值或抛异常
}
return data[top];
}
// 判断栈是否为空
bool isEmpty() const {
return top == -1;
}
// 打印栈
void display() const {
if (isEmpty()) {
cout << "Stack is empty." << endl;
} else {
for (int i = 0; i <= top; ++i) {
cout << "Element at index " << i << ": " << data[i] << endl;
}
}
}
};
int main() {
Stack s;
s.push(1);
s.push(2);
s.push(3);
s.display(); // 输出栈内容
s.pop();
s.display();
return 0;
}
```
在这个例子中,我们创建了一个名为 `Stack` 的类,包含了入栈、出栈、查看栈顶元素、检查栈是否为空以及打印栈的功能。
阅读全文