Advertisement
vencinachev

QueueRevK

May 3rd, 2021
822
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <stack>
  3. #include <queue>
  4.  
  5. using namespace std;
  6.  
  7. queue<int> reverseK(queue<int>& q, int k)
  8. {
  9.     queue<int> resultq;
  10.     stack<int> st;
  11.     int i = 0;
  12.     while (q.size() != 0)
  13.     {
  14.         if (i < k)
  15.         {
  16.             st.push(q.front());
  17.             q.pop();
  18.             i++;
  19.         }
  20.         else if (i == k)
  21.         {
  22.             while (!st.empty())
  23.             {
  24.                 resultq.push(st.top());
  25.                 st.pop();
  26.             }
  27.             resultq.push(q.front());
  28.             q.pop();
  29.             i++;
  30.         }
  31.         else
  32.         {
  33.             resultq.push(q.front());
  34.             q.pop();
  35.         }
  36.     }
  37.     return resultq;
  38. }
  39.  
  40. int main()
  41. {
  42.     queue<int> q1;
  43.     int n;
  44.     cout << "Enter number of queue elements: ";
  45.     cin >> n;
  46.     for (int i = 0; i < n; i++)
  47.     {
  48.         int el;
  49.         cin >> el;
  50.         q1.push(el);
  51.     }
  52.     int k;
  53.     do
  54.     {
  55.         cout << "Enter k: ";
  56.         cin >> k;
  57.     }
  58.     while (k < 0 || k > n);
  59.     queue<int> q2 = reverseK(q1, k);
  60.     while (q2.size() != 0)
  61.     {
  62.         cout << q2.front() << " ";
  63.         q2.pop();
  64.     }
  65.     return 0;
  66. }
  67.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement