Я знаю, как сортировать массив, но я не сортировал стек раньше.
Наиболее эффективным решением, вероятно, являетсяизмените структуру данных на список, который обеспечивает произвольный доступ, а затем отсортируйте список.То есть что-то вроде этого:
- Поместить все элементы стека в массив
- Использовать алгоритм, который вы do знаете, и отсортировать массив.
- Вставьте все элементы обратно в стек.
Если вы абсолютно не хотите использовать список, вы, возможно, найдете это решение интересным.(Украдено у здесь ):
void sort(stack)
{
type x;
if (!isEmpty(stack)) {
x = pop(stack);
sort(stack);
insert(x, stack);
}
}
void insert(x, stack)
{
type y;
if (!isEmpty(stack) && top(stack) < x) {
y = pop(stack);
insert(x, stack);
push(y, stack);
} else {
push(x, stack);
}
}