用数组实现栈的进栈,出栈和栈中元素的输出
时间: 2024-10-16 08:21:22 浏览: 46
在C++中,我们可以使用数组来实现一个简单的栈(Stack)数据结构,其基本操作包括入栈(push)、出栈(pop)以及查看或输出栈顶元素。这里我们假设栈的最大容量已知,且不会动态扩容。
```cpp
#include <iostream>
// 定义栈类型,使用数组存储元素
template <typename T, int SIZE>
class Stack {
private:
T data[SIZE]; // 存储元素的数组
int top; // 栈顶指针,用于记录栈内元素数量
public:
// 初始化栈为空
Stack() : top(-1) {}
// 检查栈是否为空
bool isEmpty() const {
return top == -1;
}
// 判断栈是否已满
bool isFull() const {
return top == SIZE - 1;
}
// 入栈(push)
void push(T value) {
if (isFull()) {
std::cout << "Stack overflow!" << std::endl;
return;
}
data[++top] = value;
}
// 出栈(pop)
void pop() {
if (isEmpty()) {
std::cout << "Stack underflow!" << std::endl;
return;
}
top--;
}
// 获取并打印栈顶元素(peek),但不删除
void peek(T& value) const {
if (isEmpty()) {
std::cout << "Stack is empty." << std::endl;
} else {
value = data[top];
}
}
// 输出栈中的所有元素
void printStack() const {
if (isEmpty()) {
std::cout << "Stack is empty." << std::endl;
} else {
for (int i = top; i >= 0; i--) {
std::cout << "Top element: " << data[i] << std::endl;
}
}
}
};
int main() {
Stack<int, 5> myStack;
// 入栈示例
myStack.push(1);
myStack.push(2);
myStack.push(3);
// 输出栈顶元素
int value;
myStack.peek(value); // 输出: Top element: 3
// 输出整个栈
myStack.printStack(); // 输出: Top element: 3, Top element: 2, Top element: 1
// 出栈示例
myStack.pop();
myStack.pop();
// 再次尝试访问栈顶元素(此时栈已空)
myStack.peek(value); // 输出: Stack is empty.
return 0;
}
```
阅读全文