fork download
  1. #include <iostream>
  2. #include <random>
  3. #include <stack>
  4. #include <string>
  5. #include <vector>
  6.  
  7. template<typename T>
  8. void stacksort(std::stack<T>& source, std::stack<T>& result);
  9.  
  10. int main()
  11. {
  12. std::stack<int> source;
  13.  
  14. for (auto &e : {7,1,9,6,4})
  15. {
  16. source.push(e);
  17. }
  18.  
  19. std::stack<int> result;
  20. stacksort(source, result);
  21.  
  22. while (!result.empty())
  23. {
  24. std::cout << result.top() << '\n';
  25. result.pop();
  26. }
  27. }
  28.  
  29. template<typename T>
  30. void stacksort(std::stack<T>& source, std::stack<T>& result)
  31. {
  32. std::stack<T> temp;
  33.  
  34.  
  35. if (!source.empty())
  36. {
  37. result.push(source.top());
  38. source.pop();
  39. }
  40.  
  41. while (!source.empty())
  42. {
  43. while (!result.empty() && source.top() > result.top())
  44. {
  45. temp.push(result.top());
  46. result.pop();
  47. }
  48.  
  49. result.push(source.top());
  50. source.pop();
  51.  
  52. while (!temp.empty())
  53. {
  54. result.push(temp.top());
  55. temp.pop();
  56. }
  57. }
  58. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
1
4
6
7
9