Advertisement
Guest User

Untitled

a guest
May 25th, 2015
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. #include "../header/stack.hpp"
  2. #include <iostream>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. template<class T>
  8. void sort_stack(stack<T>& s){
  9. stack<T> _s;
  10. while (!s.empty()){
  11. int k = s.size();
  12. T max = s.top();
  13. while (!s.empty()){
  14. T tmp = s.top();
  15. if (max < tmp) max = tmp;
  16. _s.push(tmp);
  17. s.pop();
  18. }
  19. int cnt = 0;
  20. while (k--){
  21. T tmp = _s.top();
  22. if (tmp == max){
  23. ++cnt;
  24. }else{
  25. s.push(tmp);
  26. }
  27. _s.pop();
  28. }
  29. while(cnt--) {
  30. _s.push(max);
  31. }
  32. }
  33.  
  34. while(!_s.empty()){
  35. s.push(_s.top());
  36. _s.pop();
  37. }
  38. }
  39.  
  40. template<class T>
  41. void print_stack(stack<T>& s){
  42. vector<T> v;
  43. while (!s.empty()){
  44. T tmp = s.top();
  45. v.push_back(tmp);
  46. s.pop();
  47. cout << tmp << ",";
  48. }
  49. cout << endl;
  50. for (int i = v.size() - 1; i >= 0; --i)
  51. s.push(v[i]);
  52. }
  53.  
  54.  
  55. int main(){
  56. stack<int> s;
  57. vector<int> v = { 1, -2, 2, 0, 9, 23, 21, 4, 5, 10, -8 };
  58. for (size_t i = 0; i < v.size(); ++i)
  59. s.push(v[i]);
  60. sort_stack(s);
  61. print_stack(s);
  62. return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement