# Data Structure Questions and Answers-Queue using Stacks

## Data Structure Questions and Answers-Queue using Stacks

 Question 1
A Double-ended queue supports operations such as adding and removing items from both the sides of the queue. They support four operations like addFront(adding item to top of the queue), addRear(adding item to the bottom of the queue), removeFront(removing item from the top of the queue) and removeRear(removing item from the bottom of the queue). You are given only stacks to implement this data structure. You can implement only push and pop operations. What are the total number of stacks required for this operation?(you can reuse the stack)
 A 1 B 2 C 3 D 4
Question 1 Explanation:
The addFront and removeFront operations can be performed using one stack itself as push and pop are supported (adding and removing element from top of the stack) but to perform addRear and removeRear you need to pop each element from the current stack and push it into another stack, push or pop the element as per the asked operation from this stack and in the end pop elements from this stack to the first stack.

 Question 2
You are asked to perform a queue operation using a stack. Assume the size of the stack is some value 'n' and there are 'm' number of variables in this stack. The time complexity of performing deQueue operation is (Using only stack operations like push and pop)(Tightly bound).
 A O(m) B O(n) C O(m*n) D Data is insufficient
Question 2 Explanation:
To perform deQueue operation you need to pop each element from the first stack and push it into the second stack. In this case you need to pop 'm' times and need to perform push operations also 'm' times. Then you pop the first element from this second stack (constant time) and pass all the elements to the first stack (as done in the beginning)('m-1' times). Therfore the time complexity is O(m).

 Question 3
Consider you have an array of some random size. You need to perform dequeue operation. You can perform it using stack operation (push and pop) or using queue operations itself (enQueue and Dequeue). The output is guaranteed to be same. Find some differences?
 A They will have different time complexities B The memory used will not be different C There are chances that output might be different D No differences
Question 3 Explanation:
To perform operations such as Dequeue using stack operation you need to empty all the elements from the current stack and push it into the next stack, resulting in a O(number of elements) complexity whereas the time complexity of dequeue operation itself is O(1). And there is a need of a extra stack. Therefore more memory is needed.

 Question 4
Consider you have a stack whose elements in it are as follows.

5 4 3 2 << top

Where the top element is 2.

You need to get the following stack

6 5 4 3 2 << top

The operations that needed to be performed are (You can perform only push and pop):

 A Push(pop()), push(6), push(pop()) B Push(pop()), push(6) C Push(pop()), push(pop()), push(6) D Push(6)