【发布时间】:2018-11-08 20:14:02
【问题描述】:
我正在尝试编写代码以在不使用额外空间的情况下对堆栈进行排序。这在逻辑上是正确的,但我的输出是完全随机的。有人能指出我的错误吗?
void insertatsortstack(int element, stack<int> s){
if(s.empty()==1 || element > s.top())
{
s.push(element);
return;
}
int temp=s.top();
s.pop();
insertatsortstack(element,s);
s.push(temp);
}
void sortstack(stack<int> s){
if(s.size()>0){
int element=s.top();
s.pop();
sortstack(s);
insertatsortstack(element,s);
}
}
【问题讨论】:
-
缩进似乎也是随机的,所以很难阅读……你试过Valgrind吗?如果结果是随机的,我怀疑有一些内存损坏。
-
it is logically correct but my output is completely random...这不是完全矛盾吗?你真的有一个现实世界需要这样做,还是这是一个家庭作业问题?我的投票是不使用堆栈进行排序。相反,弹出一个像数组这样的数据结构,它更容易用于排序。然后,之后重新加载堆栈。 -
当我按照我的说法进行试运行时,它是正确的,是的,它不是作业问题。我正在解决来自 gfg 的问题,以详细了解并使其对我即将到来的安置有用
-
在旁注中,你说你实现这个是为了不使用额外的空间,但我认为你失败了。因为,由于您使用递归,因此最终在运行时堆栈中消耗了大量空间......
-
试着用英文写下你想让你的代码做什么。一步步。使用一副纸牌或一堆硬币,手动模拟这些步骤。 然后编写代码以在计算机上实现该解决方案。
标签: recursion data-structures stack