Вот ограничение:Как передать стек функции, когда функция изменяет стек?
- только STL должна быть использована для создания стеки (не используйте-структуру для создания стеки)
- Сортировать стек без использования каких-либо петель
я разобрался решение с ограничением 2. Но когда я создаю стек, используя STL, чтобы удовлетворить ограничение 1, стек не сортируется, а выход такой же, как и вход.
Ожидаемый выход: 5 4 3 2 1 Мой выход: 1 2 3 4 5
Ниже приведен код:
#include<iostream>
#include<stack>
using namespace std;
void SortedInsert(stack<int> S,int x)
{
if(S.empty() || x > S.top())
S.push(x);
else
{
int temp = S.top();
S.pop();
SortedInsert(S,x);
S.push(temp);
}
}
void StackSort(stack<int> S)
{
if(!S.empty())
{
int x = S.top();
S.pop();
StackSort(S);
SortedInsert(S,x);
}
}
void main()
{
int arr[5] = {1,2,4,3,5};
stack<int> S;
for(int i=4 ; i>=0 ; i--)
S.push(arr[i]);
StackSort(S);
while(!S.empty())
{
cout<<S.top()<<" ";
S.pop();
}
cin.get();
}