c++设计一个算法,利用顺序站的基本运算,从栈顶到占地输出站中的所有元素,要求仍然保持占中元素不变
时间: 2024-12-17 13:28:52 浏览: 11
在C++中,如果你想要从栈顶到栈底遍历并打印栈中的所有元素,同时保持栈的状态不变,可以使用迭代的方式来实现。这里是一个简单的示例,假设我们有一个名为`Stack`的模板类,它包含一个`vector<int>`作为底层容器:
```cpp
template <typename T>
class Stack {
private:
std::vector<T> elements;
public:
// 添加元素到栈顶
void push(T value) {
elements.push_back(value);
}
// 从栈顶移除并返回元素
T pop() {
if (isEmpty()) {
throw std::runtime_error("Stack is empty");
}
T top = elements.back();
elements.pop_back();
return top;
}
// 检查栈是否为空
bool isEmpty() const {
return elements.empty();
}
// 遍历并打印栈顶到底部的所有元素
void printFromTopToBottom() {
for (T& value : elements) {
std::cout << value << " ";
}
std::cout << std::endl; // 打印换行
}
};
int main() {
Stack<int> s;
s.push(1);
s.push(2);
s.push(3);
s.printFromTopToBottom(); // 输出:3 2 1
// ... 现在你可以继续使用s,如正常操作栈一样,其内容不会改变
s.pop();
s.printFromTopToBottom(); // 输出:2 1
return 0;
}
```
在这个例子中,`printFromTopToBottom`函数会按照顺序从栈顶开始逐个访问元素,并打印它们。每次循环内部的操作都不会影响栈中其他元素的位置。
阅读全文