我需要帮助找出以下代码段中的错误来排序堆栈

时间:2014-08-14 19:33:47

标签: c sorting

我已经阅读了网站中堆栈排序的答案,但我无法实现我的代码。

void sort(int *stack) {
    if(!isempty()) {
        int y=pop(stack,&i1);

        int max=y;
        int j;
        while(!isempty) {
                int x=pop(stack,&i1);
                if(x>y) {
                    max=x;
                    push(y,stack1,&i2);
                } else
                    push(x,stack1,&i2);
            }
        push(max,stack2,&i3);
    }
    int *temp;
    temp=stack1;
    stack1=stack;
    stack=temp;
    sort(stack);
}

我使用&运算符用于stack指针,因为我使用了三个堆栈。有人请解释为什么它会变成无限循环? stack是原始数组,stack 1是临时数组,stack 3具有最终排序值。

1 个答案:

答案 0 :(得分:0)

首先要检查“x> max”而不是“x> y”。

有许多令人困惑的事情。正如评论中所提到的,有一个变量和一个名为“isempty”的函数。我想这是一个输入错误,它必须是函数“isempty”。

你的功能“排序”无法摆脱它,因为你在函数的最底层调用它。它总是循环回归自己。 (无限递归函数)。所以命令“sort(stack)”必须在while循环中。 (带有所有帮助命令)。

我无法继续前进,因为这个问题更令人困惑。只是尝试制作这些错误并首先编译代码!