Стек C++: методы печати сверху вниз

Чтобы напечатать стек сверху вниз в 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;
}