Problem, as an interviewer would state it: "Implement a FIFO queue using only two stacks (LIFO structures). Discuss edge cases, runtime, and alternatives."
Examples:
q.enqueue(1); q.enqueue(2); q.enqueue(3);
q.dequeue(); // 1
q.dequeue(); // 2
q.enqueue(4);
q.dequeue(); // 3
Clarifying questions expected:
- Which operations are needed:
enqueue,dequeue,peek,size,isEmpty? - What should
dequeueandpeekreturn on an empty queue? - What runtime is expected: is amortized O(1) per operation acceptable?
Code / implementation expected: Yes — real, direct proof against a reference queue, a measurement of the amortized cost, and the classic bug.