Advertisement
BojidarDosev

Untitled

Jan 31st, 2025
15
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.62 KB | None | 0 0
  1. #include <iostream>
  2. #include <deque>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T>
  8. class Deque {
  9. private:
  10. deque<T> data;
  11.  
  12. public:
  13. void insertFront(const T& e) {
  14. data.push_front(e);
  15. }
  16.  
  17. void insertBack(const T& e) {
  18. data.push_back(e);
  19. }
  20.  
  21. void eraseFront() {
  22. if (!data.empty()) {
  23. data.pop_front();
  24. }
  25. }
  26. void eraseBack() {
  27. if (!data.empty()) {
  28. data.pop_back();
  29. }
  30. }
  31.  
  32. T front() const {
  33. if (!data.empty()) {
  34. return data.front();
  35. }
  36. throw out_of_range("Deque is empty");
  37. }
  38.  
  39. T back() const {
  40. if (!data.empty()) {
  41. return data.back();
  42. }
  43. throw out_of_range("Deque is empty");
  44. }
  45.  
  46. size_t size() const {
  47. return data.size();
  48. }
  49.  
  50. bool empty() const {
  51. return data.empty();
  52. }
  53.  
  54. const deque<T>& getData() const {
  55. return data;
  56. }
  57. };
  58.  
  59. template <typename T>
  60. Deque<T> mergeSortedDeques(const Deque<T>& d1, const Deque<T>& d2) {
  61. Deque<T> result;
  62. deque<T> temp1 = d1.getData();
  63. deque<T> temp2 = d2.getData();
  64.  
  65. // Сливане в нарастващ ред
  66. while (!temp1.empty() && !temp2.empty()) {
  67. if (temp1.front() < temp2.front()) {
  68. result.insertBack(temp1.front());
  69. temp1.pop_front();
  70. } else {
  71. result.insertBack(temp2.front());
  72. temp2.pop_front();
  73. }
  74. }
  75.  
  76. while (!temp1.empty()) {
  77. result.insertBack(temp1.front());
  78. temp1.pop_front();
  79. }
  80.  
  81. while (!temp2.empty()) {
  82. result.insertBack(temp2.front());
  83. temp2.pop_front();
  84. }
  85.  
  86. return result;
  87. }
  88.  
  89. int main() {
  90. Deque<int> d1, d2;
  91.  
  92. int n1, n2, value;
  93.  
  94. cout << "Enter the number of elements for the first deque: ";
  95. cin >> n1;
  96. cout << "Enter the elements for the first deque in sorted order: " << endl;
  97. for (int i = 0; i < n1; ++i) {
  98. cin >> value;
  99. d1.insertBack(value);
  100. }
  101.  
  102. cout << "Enter the number of elements for the second deque: ";
  103. cin >> n2;
  104. cout << "Enter the elements for the second deque in sorted order: " << endl;
  105. for (int i = 0; i < n2; ++i) {
  106. cin >> value;
  107. d2.insertBack(value);
  108. }
  109.  
  110. // Сливане на двата дека
  111. Deque<int> result = mergeSortedDeques(d1, d2);
  112.  
  113. cout << "Merged deque: ";
  114. while (!result.empty()) {
  115. cout << result.front() << " ";
  116. result.eraseFront();
  117. }
  118. cout << endl;
  119.  
  120. return 0;
  121. }
  122.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement