Сортировка стека с использованием рекурсии и без использования дополнительного пространства - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь написать код для сортировки стека без использования дополнительного пространства.Это логически правильно, но мой вывод совершенно случайный.Может ли кто-нибудь указать на мою ошибку?

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);
    }
}

1 Ответ

0 голосов
/ 30 мая 2018

Я думаю, что вы пришли из фона Java.Вы передаете значение в функции, которые сделают копию вашего стека, и ваш исходный стек не будет изменен.Вам нужно передать значение по ссылке.

void insertatsortstack(int element, stack<int> & s);
void sortstack(stack<int> &s);

Реализация рабочего кода

(Предполагается, что вы используете std :: stack)

...