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

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


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() ব্যবহার করে)।
  • ওভারফ্লো চেক বাধ্যতামূলক (ক্যাপাসিটি লিমিট থাকলে)।
  • রিটার্ন ভ্যালু দিয়ে সাফল্য জানানো ভালো অনুশীলন।
  • ডাইনামিক কিউ চাইলে অটো-রিসাইজ লজিক যোগ করুন।
  1. জাভাস্ক্রিপ্টে ডাবলি লিংকড লিস্টে এলিমেন্ট ইনসার্ট করা

  2. জাভাস্ক্রিপ্টে লিংকড লিস্টে এলিমেন্ট যোগ করা (Insert)

  3. জাভাস্ক্রিপ্ট ইমপোর্টে {} ব্রেসের ব্যবহার

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