কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: কিউ (Queue) ইমপ্লিমেন্টেশন


কিউ (Queue)

কিউ FIFO হিসেবে ইমপ্লিমেন্ট হয় যেখানে ইনসার্শন একটি кінarında (রিয়ার) এবং ডিলিশন অন্য кінার থেকে (ফ্রন্ট) হয়। প্রথমে যে এলিমেন্ট ইন করবে, সেটি প্রথমে ডিলিট হবে।

কিউ অপারেশনগুলো -

EnQueue(int data) - রিয়ার এন্ডে ইনসার্শন

int DeQueue() - ফ্রন্ট এন্ড থেকে ডিলিশন

এটি অ্যারে ব্যবহার করে C++-এ কিউ ইমপ্লিমেন্ট করার প্রোগ্রাম।

অ্যালগরিদম

শুরু
    Enqueue() ফাংশন - কিউতে এলিমেন্ট ইনসার্ট করতে:
        যদি কিউ পুরোপুরি ভরা থাকে তবে "Overflow" প্রিন্ট করো।
        অন্যথায় এলিমেন্টটি রিয়ারে ইনসার্ট করো।
        রিয়ারের ভ্যালু আপডেট করো।
শুরু
    Dequeue() ফাংশন - কিউ থেকে এলিমেন্ট ডিলিট করতে:
        যদি কিউ পুরোপুরি খালি থাকে তবে "Underflow" প্রিন্ট করো।
        অন্যথায় ফ্রন্ট থেকে এলিমেন্ট ডিলিট করো।
        রিয়ারের ভ্যালু আপডেট করো।
শেষ

উদাহরণ কোড

#include <bits/stdc++.h> 
using namespace std; 
struct Q { 
    int f, r, capacity; 
    int* q; 
    Q(int c) { 
        f = r = 0; 
        capacity = c; 
        q = new int[c]; 
    } 
    ~Q() { delete[] q; } 
    void Enqueue(int d) { 
        if (capacity == r) { // চেক করো কিউ ফুল কিনা
            printf("\nQueue is full\n"); 
            return; 
        } else { 
            q[r] = d; // ডেটা ইনসার্ট
            r++; // রিয়ার আপডেট
        } 
        return; 
    } 
    void Dequeue() { 
        if (f == r) { 
            printf("\nQueue is empty\n"); 
            return; 
        } else { 
            for (int i = 0; i < r - 1; i++) { 
                q[i] = q[i + 1]; 
            } 
            r--; // রিয়ার আপডেট
        } 
        return; 
    } 
    void Display() { // কিউ ডিসপ্লে
        int i; 
        if (f == r) { 
            printf("\nQueue is Empty\n"); 
            return; 
        } 
        for (i = f; i < r; i++) { 
            printf(" %d <-- ", q[i]); 
        } 
        return; 
    } 
    void Front() { 
        if (f == r) { 
            printf("\nQueue is Empty\n"); 
            return; 
        } 
        printf("\nFront Element is: %d", q[f]); // কিউর ফ্রন্ট এলিমেন্ট প্রিন্ট
        return; 
    } 
}; 
int main(void) { 
    Q qu(3); 
    qu.Display(); 
    cout << "after inserting elements" << endl; 
    qu.Enqueue(10); 
    qu.Enqueue(20); 
    qu.Enqueue(30); 
    qu.Display(); 
    qu.Dequeue(); 
    qu.Dequeue(); 
    printf("\n\nafter two node deletion\n\n"); 
    qu.Display(); 
    qu.Front(); 
    return 0; 
}

আউটপুট

Queue is Empty
10 <-- 20 <-- 30 <--
after two node deletion
30 <--
Front Element is: 30

  1. C++-এ সিজার সাইফার (Caesar Cipher) ইমপ্লিমেন্টেশন

  2. C++ প্রোগ্রাম: AVL ট্রি ইমপ্লিমেন্টেশন

  3. C++ প্রোগ্রাম: Max Heap ইমপ্লিমেন্টেশন

  4. C++ STL-এ Set Symmetric Difference বাস্তবায়ন