Чтобы напечатать стек сверху вниз в C++, вы можете использовать следующие методы:
Метод 1: использование цикла
#include <iostream>
#include <stack>
void printStack(std::stack<int> myStack) {
while (!myStack.empty()) {
std::cout << myStack.top() << " ";
myStack.pop();
}
}
int main() {
std::stack<int> myStack;
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.push(4);
myStack.push(5);
printStack(myStack);
return 0;
}
Метод 2: использование рекурсии
#include <iostream>
#include <stack>
void printStack(std::stack<int>& myStack) {
if (myStack.empty())
return;
int top = myStack.top();
myStack.pop();
printStack(myStack);
std::cout << top << " ";
}
int main() {
std::stack<int> myStack;
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.push(4);
myStack.push(5);
printStack(myStack);
return 0;
}
Метод 3. Использование временного стека
#include <iostream>
#include <stack>
void printStack(std::stack<int>& myStack) {
std::stack<int> tempStack;
while (!myStack.empty()) {
tempStack.push(myStack.top());
myStack.pop();
}
while (!tempStack.empty()) {
std::cout << tempStack.top() << " ";
tempStack.pop();
}
}
int main() {
std::stack<int> myStack;
myStack.push(1);
myStack.push(2);
myStack.push(3);
myStack.push(4);
myStack.push(5);
printStack(myStack);
return 0;
}