মডিউল ১৫-৫ঃ Reversing a Queue (CodingNinjas)

প্রবলেম লিংকঃ Reversing a Queue - Coding Ninjas

প্রবলেম স্টেটমেন্টঃ একটি কিউ দেওয়া থাকবে। কিউটি রিভার্স করে রিটার্ন করতে হবে। সল্যুশনঃ আমরা কিউ থেকে এলিমেন্ট গুলো নিয়ে একটি স্ট্যাকে রেখে দিতে পারি। তারপর সেই স্ট্যাক থেকে আবার আগের কিউ তে নিয়ে আসতে পারি। তাহলেই এলিমেন্টগুলো রিভার্স ওয়েতে কিউতে চলে আসবে।

মনে করি, এটি আমাদের কিউ। এবার আমরা এখান থেকে এলিমেন্ট পপ করে স্ট্যাকে পুশ করে রাখা শুরু করি।

এবার স্ট্যাক থেকে পপ করে কিউতে পুশ করে রেখে দেই।

দেখতে পাচ্ছি অলরেডি আমাদের কিউ রিভার্স হয়ে গেছে।

#include <bits/stdc++.h>
queue<int> reverseQueue(queue<int> q)
{
    stack<int> s;
    while (!q.empty())     // কিউ এম্পটি না হওয়া পর্যন্ত লুপ চালানো হচ্ছে।
    {
        s.push(q.front());  // কিউ থেকে স্ট্যাকে পুশ করা হচ্ছে। 
        q.pop();            // কিউ পপ করা হচ্ছে।  
    }
    while (!s.empty())     // এবার স্ট্যাক এম্পটি না হওয়া পর্যন্ত লুপ চালানো হচ্ছে।
    {
        q.push(s.top());   // স্ট্যাক থেকে কিউতে পুশ করা হচ্ছে। 
        s.pop();           // স্ট্যাক পপ করা হচ্ছে।  
    } 
    return q;         // রিভার্স কিউ রিটার্ন করা হচ্ছে।
}

Last updated