Peek Front Element of Queue in DSA C - Time & Space Complexity
We want to understand how long it takes to look at the front item in a queue.
The question is: How does the time to peek change as the queue grows?
Analyze the time complexity of the following code snippet.
// Peek front element of a queue
int peekFront(Queue* q) {
if (q->front == NULL) {
return -1; // Queue is empty
}
return q->front->data;
}
This code returns the value at the front of the queue without removing it.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Accessing the front pointer of the queue.
- How many times: Exactly once per peek operation.
Looking at the front element takes the same steps no matter how big the queue is.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 1 |
| 100 | 1 |
| 1000 | 1 |
Pattern observation: The time stays constant even if the queue grows larger.
Time Complexity: O(1)
This means peeking the front element takes the same short time no matter how many items are in the queue.
[X] Wrong: "Peeking the front element takes longer if the queue is bigger because it has to look through all items."
[OK] Correct: The front element is directly accessible via a pointer, so no searching is needed regardless of queue size.
Knowing that peeking is a quick, constant-time operation helps you explain queue efficiency clearly in interviews.
"What if the queue was implemented using an array without a front pointer? How would the time complexity of peeking change?"
Practice
peek operation do in a queue?Solution
Step 1: Understand the peek operation
The peek operation looks at the front element of the queue without changing the queue.Step 2: Compare with other operations
Removing is done by dequeue, adding by enqueue, and checking empty is a separate check.Final Answer:
Returns the front element without removing it -> Option AQuick Check:
Peek = front element without removal [OK]
- Confusing peek with dequeue
- Thinking peek adds elements
- Assuming peek checks emptiness
q implemented with an array and front index front?Solution
Step 1: Identify front element in array queue
The front element is at indexfrontin the arrayq.Step 2: Check other options
rearpoints to the back,front + 1is next element,q[0]may not be front if front moved.Final Answer:
int x = q[front]; -> Option AQuick Check:
Peek front = q[front] [OK]
- Using rear index instead of front
- Adding 1 to front index incorrectly
- Assuming front is always zero
int q[5] = {10, 20, 30, 40, 50};
int front = 2;
printf("%d", q[front]);Solution
Step 1: Identify the element at index front
Index 2 in array q is the third element, which is 30.Step 2: Confirm output of printf
Printing q[front] prints 30.Final Answer:
30 -> Option CQuick Check:
q[2] = 30 [OK]
- Confusing index 2 with value 20
- Printing q[front + 1] by mistake
- Assuming front is zero
int q[3] = {5, 10, 15};
int front = 3;
printf("%d", q[front]);Solution
Step 1: Check front index validity
Array q has indices 0 to 2. front = 3 is outside bounds.Step 2: Understand consequences
Accessing q[3] causes undefined behavior or runtime error.Final Answer:
front index is out of bounds -> Option BQuick Check:
front must be within 0 to 2 [OK]
- Ignoring array bounds
- Assuming front can be equal to array size
- Thinking printf syntax is wrong
q[5], front index front = 4, and rear index rear = 2, which expression correctly peeks the front element?Solution
Step 1: Understand circular queue front
In a circular queue, the front element is at index (front + 1) % size, because front points to the last dequeued position.Step 2: Check modulo usage
Modulo is used to wrap around the array indices correctly.Final Answer:
q[(front + 1) % 5] -> Option DQuick Check:
Peek front = q[(front + 1) % size] in circular queue [OK]
- Using q[front] directly in circular queue
- Confusing rear with front
- Assuming front is always zero
Ready to prove it?
Pass the test and this pattern moves unknown
