当前位置:首页 C++ > 正文

c++用递归函数和栈实现栈元素逆序输出

作者:野牛程序员:2023-11-20 15:41:31 C++阅读 2593

递归函数是实现栈元素逆序输出的一种有效方法。下面是一个使用递归函数和栈的C++示例代码:

#include <iostream>
#include <stack>

void reverseStack(std::stack<int> &s) {
    // 基本情况:栈为空
    if (s.empty()) {
        return;
    }

    // 将栈顶元素取出
    int topElement = s.top();
    s.pop();

    // 递归处理剩余元素
    reverseStack(s);

    // 将取出的栈顶元素插入到栈底
    insertAtBottom(s, topElement);
}

void insertAtBottom(std::stack<int> &s, int value) {
    // 如果栈为空,直接插入元素
    if (s.empty()) {
        s.push(value);
        return;
    }

    // 将栈顶元素取出
    int topElement = s.top();
    s.pop();

    // 递归处理剩余元素
    insertAtBottom(s, value);

    // 将取出的栈顶元素再插入到栈底
    s.push(topElement);
}

int main() {
    std::stack<int> myStack;

    // 将元素压入栈
    myStack.push(1);
    myStack.push(2);
    myStack.push(3);
    myStack.push(4);

    std::cout << "原始栈顺序:";
    while (!myStack.empty()) {
        std::cout << myStack.top() << " ";
        myStack.pop();
    }

    // 逆序输出栈
    reverseStack(myStack);

    std::cout << "\\n逆序输出栈:";
    while (!myStack.empty()) {
        std::cout << myStack.top() << " ";
        myStack.pop();
    }

    return 0;
}

这个程序定义了两个函数:reverseStackinsertAtBottom,通过递归的方式将栈元素逆序输出。在 main 函数中,首先将元素压入栈,然后输出原始栈顺序,接着调用 reverseStack 函数逆序输出栈,并输出逆序后的结果。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击