TOPIC: Queue DEFINITION: A queue is a linear data structure that follows the First-In-First-Out (FIFO) principle, where elements are added from one end and removed from the other, allowing for efficient management of items in a specific order. This helps solve problems that require processing items in a sequential manner, such as job scheduling or print queues. TIME_COMPLEXITY: The time complexity for enqueue and dequeue operations in a queue is O(1), as these operations involve adding or removing an element from the end or front of the queue, which takes constant time. SPACE_COMPLEXITY: The space complexity of a queue is O(n), where n is the number of elements in the queue, as each element occupies a certain amount of space in memory. USE_WHEN: Use a queue when you need to process items in a specific order, such as handling requests in the order they were received, or when you need to manage a pool of resources that are allocated and deallocated in a particular sequence. AVOID_WHEN: Avoid using a queue when you need to frequently access or remove elements from the middle of the sequence, as this can be inefficient; in such cases, consider using a different data structure like a linked list or an array. EXAMPLE: Initial queue: [1, 2, 3] Enqueue 4: [1, 2, 3, 4] Dequeue: [2, 3, 4] Enqueue 5: [2, 3, 4, 5] Dequeue: [3, 4, 5] Result: [3, 4, 5] REAL_WORLD_ANALOGY: A queue is similar to a line of people waiting to buy tickets at a movie theater, where the first person in line is the first to be served, and each person waits their turn in the order they arrived. SOURCE_NOTE: