用c++编写程序实现顺序栈的算法
时间: 2024-09-30 19:04:20 浏览: 32
在C++中,我们可以使用数组作为底层数据结构来实现一个简单的顺序栈(也称为线性堆栈)。以下是基本的顺序栈算法实现:
```cpp
#include <iostream>
// 定义栈的大小
const size_t StackSize = 10;
// 序列化整型元素的栈模板
template <typename T>
class SequentialStack {
private:
T stack[StackSize]; // 栈底指针
size_t top; // 当前栈顶位置
public:
SequentialStack() : top(0) {}
// 判断栈是否为空
bool isEmpty() const {
return top == 0;
}
// 判断栈是否已满
bool isFull() const {
return top == StackSize;
}
// 入栈操作 (压入元素)
void push(const T& value) {
if (!isFull()) {
stack[top++] = value;
} else {
std::cout << "Stack overflow!" << std::endl;
}
}
// 出栈操作 (弹出元素)
T pop() {
if (isEmpty()) {
std::cout << "Stack underflow!" << std::endl;
return T();
} else {
T value = stack[--top];
return value;
}
}
// 查看栈顶元素但不移除
T peek() const {
if (!isEmpty()) {
return stack[top - 1];
} else {
std::cout << "Stack is empty." << std::endl;
return T();
}
}
};
int main() {
SequentialStack<int> s;
s.push(5);
s.push(10);
std::cout << "Top element is: " << s.peek() << std::endl;
s.pop();
std::cout << "After popping, top element is: " << s.peek() << std::endl;
return 0;
}
```
这个示例展示了如何创建一个顺序栈并进行基本的操作:push(入栈)、pop(出栈)以及peek(查看栈顶元素)。需要注意的是,此实现没有考虑动态扩容,如果需要处理大容量数据,可以使用动态内存分配。
阅读全文