Assignment 2:
Implement a Queue using 2 stacks. The Queue should contain an “incoming” stack and an
“outgoing” stack. All enqueues are pushed into the incoming stack. All dequeues are popped
out of the outgoing stack. If the outgoing stack is empty and the incoming stack is not, all
elements stored in the incoming stack are popped and pushed into the outgoing stack. If both
stacks are empty, the dequeue operation raises an error. The stacks can be implements using
either lists or linked lists.