Guest User

Untitled

a guest
Apr 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. #include <iostream>
  2. #include <stack>
  3.  
  4. using namespace std;
  5.  
  6. template<class T>
  7. stack<T> CombiningStacks(stack<T> stack1, stack<T> stack2)
  8. {
  9. stack<T> commonStack;
  10.  
  11. while (!stack1.empty())
  12. {
  13. commonStack.push(stack1.top());
  14. stack1.pop();
  15. }
  16.  
  17. while (!stack2.empty())
  18. {
  19. commonStack.push(stack2.top());
  20. stack2.pop();
  21. }
  22.  
  23. return commonStack;
  24. }
  25.  
  26. template<class T>
  27. stack<T> Sort(stack<T> sourceStack)
  28. {
  29. stack<T> stack1;
  30. stack<T> stack2;
  31. T currentTop;
  32.  
  33. while (!sourceStack.empty())
  34. {
  35. currentTop = sourceStack.top();
  36. if (stack1.size() == 0)
  37. {
  38. stack1.push(currentTop);
  39. sourceStack.pop();
  40. continue;
  41. }
  42.  
  43. if (currentTop >= stack1.top())
  44. {
  45. stack1.push(currentTop);
  46. }
  47. else
  48. {
  49. stack2.push(currentTop);
  50. }
  51. sourceStack.pop();
  52. }
  53.  
  54. if (stack2.size() != 0)
  55. {
  56. return Sort(CombiningStacks(stack1, stack2));
  57. }
  58.  
  59. return stack1;
  60. }
  61.  
  62. int main()
  63. {
  64. stack<int> sourceStack;
  65. int value, size;
  66. cout << "Enter the size of stack: ";
  67. cin >> size;
  68.  
  69. if (size < 0)
  70. {
  71. cout << "ERROR: you entered a negative value!";
  72. system("pause");
  73. return -1;
  74. }
  75.  
  76. cout << "Enter the values:" << endl;
  77. for (int i = 0; i < size; ++i)
  78. {
  79. cin >> value;
  80. sourceStack.push(value);
  81. }
  82.  
  83. stack<int> sortedStack = Sort(sourceStack);
  84. cout << endl;
  85.  
  86. cout << "Sorted stack: ";
  87. for (int i = 0; i < size; ++i)
  88. {
  89. cout << sortedStack.top();
  90. sortedStack.pop();
  91. cout << ' ';
  92. }
  93.  
  94. system("pause");
  95. return 0;
  96. }
Add Comment
Please, Sign In to add comment