কিউ (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