📖 Scenario: Imagine you are managing a hospital emergency room. Patients arrive with different levels of urgency. You want to treat the most urgent patients first. This is a perfect use case for a priority queue.
🎯 Goal: Build a simple priority queue using a list of patients with their urgency levels. You will add patients, set a threshold urgency, select patients above that threshold, and print them in order of urgency.
📋 What You'll Learn
Create a dictionary with patient names as keys and urgency levels as values
Create a threshold urgency level variable
Use a loop to select patients with urgency above the threshold
Print the selected patients sorted by urgency from highest to lowest
💡 Why This Matters
🌍 Real World
Priority queues are used in hospitals, task scheduling, and anywhere urgent tasks must be handled first.
💼 Career
Understanding priority queues helps in software development roles involving scheduling, resource management, and real-time systems.
Progress0 / 4 steps
1
Create the patient urgency dictionary
Create a dictionary called patients with these exact entries: "John": 3, "Emma": 5, "Liam": 2, "Olivia": 4, "Noah": 1
DSA C#
Hint
Use Dictionary<string, int> and initialize it with the given patient names and urgency levels.
2
Set the urgency threshold
Add an integer variable called urgencyThreshold and set it to 3
DSA C#
Hint
Declare an integer variable named urgencyThreshold and assign it the value 3.
3
Select patients above the urgency threshold
Create a list of strings called priorityPatients and use a foreach loop with variables patient and urgency to iterate over patients. Add patient to priorityPatients if urgency is greater than or equal to urgencyThreshold
DSA C#
Hint
Use a foreach loop to iterate over patients and add patients meeting the threshold to priorityPatients.
4
Print the priority patients sorted by urgency
Sort priorityPatients by urgency in descending order using patients dictionary, then print each patient name and urgency in the format "Name: Urgency"
DSA C#
Hint
Use priorityPatients.Sort with a comparison using patients dictionary values, then print each patient and urgency with Console.WriteLine.
Practice
(1/5)
1. What is the main characteristic of a Priority Queue compared to a regular queue?
easy
A. Elements are dequeued in the exact order they were enqueued
B. Elements are dequeued based on their priority, not just order of insertion
C. It only stores elements of the same data type
D. It allows random access to elements by index
Solution
Step 1: Understand queue behavior
A regular queue removes elements in the order they were added (FIFO).
Step 2: Understand priority queue behavior
A priority queue removes elements based on priority, not just order.
Final Answer:
Elements are dequeued based on their priority, not just order of insertion -> Option B
Quick Check:
Priority queue = priority-based removal [OK]
Hint: Priority queue removes highest priority first, not oldest [OK]
Common Mistakes:
Confusing priority queue with FIFO queue
Thinking priority queue allows random access
Assuming priority queue only stores one data type
2. Which of the following is the correct way to declare a priority queue of integers in C# using System.Collections.Generic.PriorityQueue?
easy
A. var pq = new PriorityQueue();
B. var pq = new PriorityQueue<int>();
C. PriorityQueue<int> pq = new PriorityQueue<>();
D. PriorityQueue pq = new PriorityQueue();
Solution
Step 1: Recall PriorityQueue syntax in C#
The generic PriorityQueue requires two types: element type and priority type.
Step 2: Check each option
var pq = new PriorityQueue(); correctly uses PriorityQueue<int, int>. Others have syntax errors or missing types.
Final Answer:
var pq = new PriorityQueue(); -> Option A
Quick Check:
PriorityQueue<TElement, TPriority> syntax [OK]
Hint: PriorityQueue needs element and priority types in angle brackets [OK]
Common Mistakes:
Omitting priority type in generic declaration
Using wrong constructor syntax
Trying to declare without generic types
3. What will be the output of the following C# code?
var pq = new PriorityQueue();
pq.Enqueue("apple", 3);
pq.Enqueue("banana", 1);
pq.Enqueue("cherry", 2);
while (pq.Count > 0) {
Console.Write(pq.Dequeue() + " ");
}
medium
A. banana cherry apple
B. apple cherry banana
C. cherry banana apple
D. apple banana cherry
Solution
Step 1: Understand enqueue priorities
Elements are enqueued with priorities: apple=3, banana=1, cherry=2.
Step 2: Dequeue order based on priority
PriorityQueue dequeues elements with lowest priority first: banana(1), cherry(2), apple(3).
Final Answer:
banana cherry apple -> Option A
Quick Check:
Lowest priority dequeued first = banana cherry apple [OK]
Hint: PriorityQueue dequeues lowest priority first by default [OK]
Common Mistakes:
Assuming highest priority dequeued first
Mixing element order with priority order
Ignoring priority values
4. Identify the error in the following C# code using PriorityQueue:
var pq = new PriorityQueue();
pq.Enqueue(10, 2);
pq.Enqueue(5);
pq.Enqueue(20, 1);
medium
A. Enqueue method does not exist
B. PriorityQueue cannot store integers
C. PriorityQueue requires three generic types
D. Missing priority argument in second Enqueue call
Solution
Step 1: Check Enqueue method parameters
Enqueue requires two arguments: element and priority.
Step 2: Identify incorrect call
The second Enqueue call pq.Enqueue(5); misses the priority argument.
Final Answer:
Missing priority argument in second Enqueue call -> Option D
Quick Check:
Enqueue needs element and priority [OK]
Hint: Enqueue always needs element and priority arguments [OK]
Common Mistakes:
Forgetting priority argument in Enqueue
Thinking PriorityQueue needs three types
Assuming Enqueue accepts one argument
5. You want to process tasks with priorities where higher numbers mean higher priority. How can you use C#'s PriorityQueue to dequeue tasks in order from highest to lowest priority?
hard
A. Use PriorityQueue as is; it dequeues highest priority first
B. Sort the queue manually after enqueueing
C. Store priorities as negative values when enqueuing
D. Use a Stack instead of PriorityQueue
Solution
Step 1: Understand PriorityQueue default behavior
C# PriorityQueue dequeues elements with lowest priority first by default.
Step 2: Adjust priorities to reverse order
To get highest priority first, store priorities as negative values (e.g., -priority).
Final Answer:
Store priorities as negative values when enqueuing -> Option C
Quick Check:
Invert priorities to reverse dequeue order [OK]
Hint: Invert priorities (negative) to get highest priority first [OK]
Common Mistakes:
Assuming PriorityQueue dequeues highest priority first by default
Trying to sort queue manually
Using Stack which doesn't handle priorities
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.