gpt4 book ai didi

c++ - 递归反转堆栈

转载 作者:行者123 更新时间:2023-11-30 03:54:42 24 4
gpt4 key购买 nike

我需要在 C++ 中使用递归来反转堆栈。我只能使用poppushreverseStack没有我发现的insertAtBottom等附加功能同时搜索 stackoverflow 和网络。

我试过:

void Stack::reverseStack(){
if (isEmpty())
return;
else{
int x;
pop(x);
reverseStack();
push(x);
}
}

但这会创建一个与原始堆栈完全相同的堆栈。

最佳答案

你需要实现一个函数来在底部插入一个项目,一个例子是

void Stack::insertAtBottom(int item) {
if(isEmpty())
push(item);
else {
int x;
pop(x);
insertAtBottom(item);
push(x);
}
}

此时您可以按如下方式实现反向操作

void Stack::reverseStack(){
if (isEmpty())
return;
else{
int x;
pop(x);
reverseStack();
insertAtBottom(x);
}
}

编辑:如果他们需要在一个函数中,下面是两者的组合

void Stack::reverseStack(bool reverse=true,int item=0){
if(reverse) {
if (isEmpty())
return;
else{
int x;
pop(x);
reverseStack();
reverseStack(false,x);
}
} else {
if(isEmpty())
push(item);
else {
int x;
pop(x);
reverseStack(false,item);
push(x);
}
}
}

干杯!

关于c++ - 递归反转堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29403927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com