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::random_device rd;
  13. std::mt19937 engine(rd());
  14. std::uniform_int_distribution<> dist(1, 100);
  15.  
  16. std::stack<int> source;
  17.  
  18. for (auto &e : {7,1,9,6,4})
  19. {
  20. source.push(e);
  21. }
  22.  
  23. std::stack<int> result;
  24. stacksort(source, result);
  25.  
  26. while (!result.empty())
  27. {
  28. std::cout << result.top() << '\n';
  29. result.pop();
  30. }
  31. }
  32.  
  33. template<typename T>
  34. void stacksort(std::stack<T>& source, std::stack<T>& result)
  35. {
  36. std::stack<T> temp;
  37.  
  38.  
  39. if (!source.empty())
  40. {
  41. result.push(source.top());
  42. source.pop();
  43. }
  44.  
  45. while (!source.empty())
  46. {
  47. while (!result.empty() && source.top() > result.top())
  48. {
  49. temp.push(result.top());
  50. result.pop();
  51. }
  52.  
  53. result.push(source.top());
  54. source.pop();
  55.  
  56. while (!temp.empty())
  57. {
  58. result.push(temp.top());
  59. temp.pop();
  60. }
  61. }
  62. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
1
4
6
7
9