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

জাভাস্ক্রিপ্টে কিউ (Queue) থেকে Peek অপারেশন


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-এ) রিটার্ন করা ভালো অনুশীলন।

  1. জাভাস্ক্রিপ্টে কিউ (Queue-এ) এলিমেন্ট যোগ করা (Enqueue)

  2. জাভাস্ক্রিপ্টে PriorityQueue-এ Dequeue (Remove) অপারেশন

  3. জাভাস্ক্রিপ্টে লিংকড লিস্ট থেকে এলিমেন্ট রিমুভ করা

  4. জাভাস্ক্রিপ্টে কিউ (Queue) বাস্তবায়ন