Suppose you are given an implementation of a queue of integers. The operations that can be performed on the queue are:
- $isEmpty (Q)$ — returns true if the queue is empty, false otherwise.
- $delete (Q)$ — deletes the element at the front of the queue and returns its value.
- $insert (Q, i)$ — inserts the integer i at the rear of the queue.
Consider the following function:
void f (queue Q) {
int i ;
if (!isEmpty(Q)) {
i = delete(Q);
f(Q);
insert(Q, i);
}
}
What operation is performed by the above function $f$ ?
- Leaves the queue $Q$ unchanged
- Reverses the order of the elements in the queue $Q$
- Deletes the element at the front of the queue $Q$ and inserts it at the rear keeping the other elements in the same order
- Empties the queue $Q$