【发布时间】:2016-08-30 15:28:20
【问题描述】:
我在按降序排序堆栈时遇到问题,排序是在另一个堆栈的帮助下进行的。
这里是排序代码:
void* sort(stack_type* stack, stack_type* auxiliary) {
int* element = NULL;
while(!is_empty(stack)) {
element = pop(stack);
while(!is_empty(auxiliary) && head(auxiliary) > element) {
push(pop(auxiliary), stack);
}
push(element, auxiliary);
}
}
输出如下:
| -4 |
| -45 |
| 356 |
| 87 |
| 76 |
| 54 |
| 34 |
| 22 |
| 8 |
| 2 |
但我想要这样:
| 356 |
| 87 |
| 76 |
| 54 |
| 34 |
| 22 |
| 8 |
| 2 |
| -4 |
| -45 |
这里是完整代码的要点:https://gist.github.com/avoxy/380e96a87cb3c6cc1f4a62c02fb6428d
谢谢大家
【问题讨论】:
-
什么麻烦?
-
这应该是一种什么样的排序算法?
-
为什么 -45 在您想要的输出中出现在堆栈的顶部,而不是底部?
-
为什么
sort()返回一个void*类型的值? ... 为什么函数内部没有return语句? -
您的算法不会总是产生排序后的输出。检查逻辑