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

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


PriorityQueue: Dequeue Operation (সর্বোচ্চ প্রায়োরিটিওয়ালা এলিমেন্ট সরানো)

Dequeue মানে প্রায়োরিটি কিউর থেকে সর্বোচ্চ প্রায়োরিটিওয়ালা এলিমেন্টটি সরিয়ে ফেলা এবং তার ডেটা রিটার্ন করা। আমাদের সর্টেড অ্যারে ইমপ্লিমেন্টেশনে এটি অ্যারের শেষে থাকে, তাই pop() দিয়ে O(1)-এ করা যায়।

Dequeue মেথড ইমপ্লিমেন্টেশন

class PriorityQueue {
  constructor(maxSize = 10) {
    this.maxSize = maxSize;
    this.container = [];
  }

  isEmpty() {
    return this.container.length === 0;
  }

  // Dequeue Implementation
  dequeue() {
    if (this.isEmpty()) {
      console.log("Queue Underflow! কিউ খালি।");
      return undefined;
    }
    // সর্বোচ্চ প্রায়োরিটি = শেষ এলিমেন্ট -> pop()
    return this.container.pop().data;
  }

  // ... enqueue, peek, clear, display ...
}

টেস্টিং উদাহরণ

const pq = new PriorityQueue(5);

pq.enqueue("Hello", 3);
pq.enqueue("World", 2);
pq.enqueue("Foo", 8);

console.log("Before dequeue:");
pq.display();
// [ { data: 'World', priority: 2 },
//   { data: 'Hello', priority: 3 },
//   { data: 'Foo', priority: 8 } ]

const removed = pq.dequeue();
console.log("Dequeued:", removed); // "Foo" (Priority 8 - Highest)

console.log("After dequeue:");
pq.display();
// [ { data: 'World', priority: 2 },
//   { data: 'Hello', priority: 3 } ]

আউটপুট ব্যাখ্যা

Before dequeue:
[ { data: 'World', priority: 2 }, { data: 'Hello', priority: 3 }, { data: 'Foo', priority: 8 } ]
Dequeued: Foo
After dequeue:
[ { data: 'World', priority: 2 }, { data: 'Hello', priority: 3 } ]

"Foo" (Priority 8) সর্বোচ্চ প্রায়োরিটি, তাই প্রথমে বের হয়েছে।

Priority Queue Dequeue Logic

INSERTION ORDER (Enqueue):     PRIORITY ORDER (Internal Storage):
"Hello" (3)                         "World" (2)  ← Lowest
"World" (2)                         "Hello" (3)
"Foo" (8)                           "Foo" (8)    ← Highest (Tail)

DEQUEUE() -> pop() -> "Foo" (8) REMOVED

Time Complexity Comparison

Implementation Enqueue Dequeue Peek
Sorted Array (Current) O(n) O(1) O(1)
Unsorted Array O(1) O(n) — Linear Search O(n)
Binary Heap (Optimal) O(log n) O(log n) O(1)

নোট: বড় স্কেলে (১০,০০০+ এলিমেন্ট) Binary Heap ব্যবহার করুন। npm: priorityqueue, heap।

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

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

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

  4. জাভাস্ক্রিপ্টে splice() মেথড ব্যবহার করে এলিমেন্ট রিমুভ করার পদ্ধতি