Answer the following Question :
(a) Suppose you have two initially empty queues Q1 and Q2. Explain how you could implement the stack ADT using Q1 and Q2. Your answer should provide pseudocode algorithms for the stack operations push(e) and pop() operations. Your algorithms should only make use of the queue data structures Q1 and Q2 and any required variables.
(b) What is the run-time complexity of your implementations of the push(e) and pop() methods in Q3(a)? As usual, you should express your answer using big O notation and provide suitable justification.