【发布时间】:2011-11-08 09:22:06
【问题描述】:
我一直在尝试编写一个递归函数来搜索堆栈,但使堆栈保持原始状态。我可能会流脓 h 并弹出堆栈,但不使用辅助堆栈或任何其他数据结构。
是的,这是作业,所以我不希望得到完整的编码答案:)。关于如何接近堆栈以便递归搜索完成后堆栈完好无损的一点帮助将不胜感激。
在堆栈中搜索指定项(但会破坏堆栈)的递归函数如下:
template <class Type>
Type getNth(stack(Type) & s, int n)
{
if(s.empty())
return -1;
if(s.top() == n)
return s.top();
if(s.top() != n && s.empty())
return -1;
else
s.pop();
return getNth(s, n);
}
到目前为止,这有效。 非常感谢任何帮助
【问题讨论】:
-
+1 表示不希望别人为你做作业 :)
-
它与问题无关,所以我没有将其添加到答案中,但我认为您的最后一个 if 语句中有死代码,您永远无法输入它,因为 if s.empty () == true,则第一个 if 将被访问并返回 -1。
-
如果你不能使用堆栈作为辅助数据结构,那么你就不能使用递归:)
-
@Seth Carnegie 这个问题清楚地表明我必须编写一个递归函数——并且我可能不会使用任何辅助堆栈或其他数据结构。这可能是问题中的错误吗?
-
@Seth:+1。在任何理智的实施中都是如此。不过,链表、自修改代码等也都是可能的。
标签: c++ search recursion stack