#include <iostream>
class Stack {
private:
int* arr;
int top;
int capacity; // 栈的最大容量
public:
Stack(int size) {
arr = new int[size]; // 动态分配数组内存
capacity = size;
top = -1;
}
~Stack() {
delete[] arr;
}
// 入栈操作
void push(int x) {
if (isFull()) {
std::cout << "栈已满,无法入栈!" << std::endl;
return;
}
arr[++top] = x; // 将元素x压入栈顶
}
// 出栈操作
int pop() {
if (isEmpty()) {
std::cout << "栈为空,无法出栈!" << std::endl;
return -1;
}
return arr[top--]; // 返回栈顶元素并将top指针向下移动
}
// 获取栈顶元素
int peek() {
if (!isEmpty()) {
return arr[top];
} else {
std::cout << "栈为空,没有栈顶元素!" << std::endl;
return -1;
}
}
bool isEmpty() {
return top == -1;
}
bool isFull() {
return top == capacity - 1;
}
int size() {
return top + 1;
}
};
int main() {
Stack stack(5);
stack.push(1);
stack.push(2);
stack.push(3);
std::cout << "栈顶元素为: " << stack.peek() << std::endl;
std::cout << "出栈元素: " << stack.pop() << std::endl;
std::cout << "栈顶元素为: " << stack.peek() << std::endl;
return 0;
}