Queue: Enqueue (Add to Rear) অপারেশন
Enqueue মানে কিউর রিয়ার/টেইল (পিছনের) এলিমেন্ট যোগ করা। আমরা অ্যারের শেষে (push) এলিমেন্ট যোগ করছি যাতে FIFO অর্ডার মেনটেইন হয়।
Enqueue ফাংশন ইমপ্লিমেন্টেশন
class Queue {
constructor(maxSize = 10) {
this.maxSize = maxSize;
this.container = [];
}
isFull() {
return this.container.length >= this.maxSize;
}
enqueue(element) {
// কিউ ফুল চেক
if (this.isFull()) {
console.log("Queue Overflow! কিউর সর্বোচ্চ সাইজে পৌঁছেছে।");
return false; // যোগ হয়নি
}
// টেইলে এলিমেন্ট যোগ করুন
this.container.push(element);
return true; // সফলভাবে যোগ হয়েছে
}
// Helper methods
isEmpty() { return this.container.length === 0; }
display() { console.log(this.container); }
}
টেস্টিং উদাহরণ
const q = new Queue(3); // ম্যাক্স সাইজ ৩
q.enqueue(1); // true
q.enqueue(2); // true
q.enqueue(3); // true
q.display(); // [ 1, 2, 3 ]
// ওভারফ্লো টেস্ট
q.enqueue(4); // "Queue Overflow!" প্রিন্ট, false রিটার্ন
q.display(); // [ 1, 2, 3 ] (অপরিবর্তিত)
আউটপুট ব্যাখ্যা
[ 1, 2, 3 ] Queue Overflow! কিউর সর্বোচ্চ সাইজে পৌঁছেছে। [ 1, 2, 3 ]
কিউর ক্যাপাসিটি ৩, তাই ৪থ এলিমেন্ট যোগ হয়নি।
Enqueue vs Push
| অপারেশন | অ্যারে মেথড | পজিশন | রিটার্ন |
|---|---|---|---|
| enqueue() (Queue) | push() |
টেইল (শেষে) | Boolean (সাফল্য/ব্যর্থতা) |
| push() (Stack) | push() |
টপ (শেষে) | নিউ লেংথ |
Edge Cases হ্যান্ডলিং
enqueue(element) {
if (this.isFull()) {
// অপশন ১: এক্সেপশন থ্রো (স্ট্রিক্ট)
throw new Error("Queue Overflow: Maximum capacity reached");
// অপশন ২: false রিটার্ন (উপরের উদাহরণ)
// return false;
// অপশন ৩: অটো-রিসাইজ (ডাইনামিক কিউ)
// this.maxSize *= 2;
// this.container.push(element);
// return true;
}
this.container.push(element);
return true;
}
ব্যবহার ক্ষেত্র (Use Cases)
- টাস্ক শিডিউলিং: ব্যাকগ্রাউন্ড জব কিউ।
- ইভেন্ট বাফারিং: মাউস/কীবোর্ড ইভেন্ট কিউ।
- BFS (Breadth-First Search): গ্রাফ ট্রাভার্সাল।
- রিকোয়েস্ট থ্রটলিং: API কল কিউइং।
- প্রিন্ট কিউ: ডকুমেন্ট প্রিন্ট অর্ডার।
সারাংশ
enqueue()টেইলে এলিমেন্ট যোগ করে (push()ব্যবহার করে)।- ওভারফ্লো চেক বাধ্যতামূলক (ক্যাপাসিটি লিমিট থাকলে)।
- রিটার্ন ভ্যালু দিয়ে সাফল্য জানানো ভালো অনুশীলন।
- ডাইনামিক কিউ চাইলে অটো-রিসাইজ লজিক যোগ করুন।