Queue Data Structure: Peek অপারেশন
Peek মানে কিউর হেড (front) এলিমেন্টটি রিমুভ না করে শুধু মান রিটার্ন করা। এটি কিউর পরবর্তী ডিকিউ এলিমেন্ট চেক করার জন্য ব্যবহার হয়।
Peek ফাংশন ইমপ্লিমেন্টেশন
class Queue {
constructor(maxSize = 10) {
this.maxSize = maxSize;
this.container = [];
}
isEmpty() {
return this.container.length === 0;
}
peek() {
if (this.isEmpty()) {
console.log("Queue Underflow! কিউ খালি।");
return undefined;
}
// হেড এলিমেন্ট রিটার্ন করুন (রিমুভ ছাড়া)
return this.container[0];
}
// অন্যান্য মেথড...
enqueue(element) { /* ... */ }
dequeue() { /* ... */ }
display() { console.log(this.container); }
}
টেস্টিং উদাহরণ
const q = new Queue(5);
q.enqueue(10);
q.enqueue(20);
q.enqueue(30);
console.log("Peek:", q.peek()); // আউটপুট: 10
q.display(); // আউটপুট: [ 10, 20, 30 ]
// Peek কিউর সাইজ বা কন্টেন্ট পরিবর্তন করে না
console.log("Size after peek:", q.container.length); // 3
Peek vs Dequeue
| অপারেশন | কাজ | রিটার্ন | কিউর সাইজ |
|---|---|---|---|
| peek() | হেড এলিমেন্ট দেখায় | এলিমেন্টের মান | অপরিবর্তিত |
| dequeue() | হেড এলিমেন্ট সরিয়ে ফেলে | সরানো এলিমেন্টের মান | ১ কমে যায় |
ব্যবহার ক্ষেত্র (Use Cases)
- নেক্সট টাস্ক/জব চেক করা (বिना এক্সিকিউট করা)।
- UI-এ "Next up" দেখানো।
- কন্ডিশনাল প্রসেসিং: যদি হেড এলিমেন্ট নির্দিষ্ট শর্ত পূরণ করে তবে ডিকিউ করুন।
- ডিবাগিং/লগিং: কিউর স্টেট ইনস্পেক্ট করা।
Edge Cases হ্যান্ডলিং
peek() {
if (this.isEmpty()) {
// অপশন ১: এক্সেপশন থ্রো করুন
throw new Error("Queue Underflow: Cannot peek empty queue");
// অপশন ২: undefined রিটার্ন করুন (উপরের উদাহরণ)
// return undefined;
// অপশন ৩: null রিটার্ন করুন
// return null;
}
return this.container[0];
}
সuggestion: প্রোডাকশন কোডে এক্সেপশন থ্রো করা বা Optional টাইপ (TypeScript-এ) রিটার্ন করা ভালো অনুশীলন।