c++用递归函数和栈实现栈元素逆序输出
作者:野牛程序员:2023-11-20 15:41:31 C++阅读 3095
递归函数是实现栈元素逆序输出的一种有效方法。下面是一个使用递归函数和栈的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;
}这个程序定义了两个函数:reverseStack 和 insertAtBottom,通过递归的方式将栈元素逆序输出。在 main 函数中,首先将元素压入栈,然后输出原始栈顺序,接着调用 reverseStack 函数逆序输出栈,并输出逆序后的结果。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

- 上一篇:C++怎么使用递归实现数组前N个元素倒序输出
- 下一篇:计算机二进制八进制等怎么表示
