c++使用顺序栈,请让元素按1,2,3,4,5次序进栈,按2,3,5,4,1的次序出栈。
时间: 2024-10-20 09:09:08 浏览: 28
实验4 栈 2.zip_C/C++_
在 C++ 中,你可以使用标准库中的 `std::stack` 或者自定义数组栈来实现这个需求。由于题目要求顺序进出栈,这里我们先假设使用数组栈。顺序栈的特点是只能在一端进行插入和删除操作,也就是后进先出(LIFO,Last In First Out)原则。
```cpp
#include <iostream>
// 自定义顺序栈模板
template <typename T>
class SequentialStack {
private:
T* stack; // 存储数据的数组
size_t top; // 栈顶指针
public:
SequentialStack(size_t capacity) : stack(new T[capacity]), top(0), capacity(capacity) {}
~SequentialStack() { delete[] stack; }
// 入栈函数
void push(T value) {
if (top == capacity) {
std::cout << "Stack is full, cannot push more elements.\n";
return;
}
stack[top++] = value;
}
// 出栈函数
T pop() {
if (top == 0) {
std::cout << "Stack is empty, cannot pop an element.\n";
return T();
}
return stack[--top];
}
// 获取当前栈顶元素,但不移除
T peek() const {
if (top == 0) {
std::cout << "Stack is empty.\n";
return T();
}
return stack[top - 1];
}
// 判断栈是否为空
bool isEmpty() const { return top == 0; }
};
int main() {
SequentialStack<int> s(5);
for (int i = 1; i <= 5; ++i) {
s.push(i);
std::cout << "Pushed: " << i << "\n";
}
while (!s.isEmpty()) {
int popped_value = s.pop();
std::cout << "Popped: " << popped_value << " (in reverse order)\n";
}
return 0;
}
```
在这个示例中,我们创建了一个顺序栈 `s`,并将数字1到5依次入栈。然后每次从栈顶出栈并打印出来,实现了按2、3、5、4、1的顺序出栈的效果。注意这并不是真正的倒序,因为栈本来就是后进先出的结构,只是我们按照这个规则来演示了如何出入栈。
阅读全文