search
Log In
14 votes
7.9k views

What is the minimum number of stacks of size $n$ required to implement a queue of size $n$?

  1. One
  2. Two
  3. Three
  4. Four
in DS
edited by
7.9k views
2

but we can also implement queue using single stack if other constraints also givenhttp://gateoverflow.in/2007/gate2014-2-41

1

set2018

It may look like only one stack is required but REVERSE operation can't be done without another stack.

Therefore minimum 2 stacks are required.

2
yes for this question it will 2 .if reverse is already given then 1 stack is sufficient
1

@set2018 

what do you mean by if the reverse is already given??

In this question, queue implemented using the stack.

maintaining the queue property, First-In-First-Out (or) Last-In-Last-Out, we need a minimum of two stacks.

 

1
bottom of one stack = top of another stack
0

@Lakshman Patel RJIT

>can't we use recursion for reversing?then only one stack excluding System stack isn't?

>min Queue to imp Stack will also be same right?

5 Answers

24 votes
 
Best answer

A queue can be implemented using two stacks.

Let queue be represented as " $q$ "
and stacks used to implement $q$ be "stack1" and "stack2".

$q$ can be implemented in two ways:

Method 1 (By making EnQueue operation costly)

This method makes sure that newly entered element is always at the bottom of stack 1, so that deQueue operation just pops from stack1. To put the element at top of stack1, stack2 is used.

$enQueue(q, x)$

  1. While stack1 is not empty, push everything from stack1 to stack2.
  2. Push $x$ to stack1 (assuming size of stacks is unlimited).
  3. Push everything back to stack1.

$dnQueue(q)$

  1. If stack1 is empty then error
  2. Pop an item from stack1 and return it


Method 2 (By making deQueue operation costly)

In this method, in en-queue operation, the new element is entered at the top of stack1. In de-queue operation, if stack2 is empty then all the elements are moved to stack2 and finally top of stack2 is returned.
$enQueue(q,  x)$

  1. Push $x$ to stack1 (assuming size of stacks is unlimited).

$deQueue(q)$

  1. If both stacks are empty then error.
  2. If stack2 is empty
    While stack1 is not empty, push everything from stack1 to stack2.
  3. Pop the element from stack2 and return it.

Correct Answer: $B$


edited by
2
in method 1), newly entered element is being entered at bottom of stack1, not on top. on top there is most old element which being popped first.
1
Corrected. Thanks :)
10 votes
ans b)
0
is it a theory or any explanation is present?
6 votes
Two stacks we need to implement one queue
3 votes

Two stacks of size n required to implement a queue of size n

–5 votes
Just one stack is needed to implement queue.

If stack is implemented using single link list then, we can traverse till the bottom of stack and return the value which should be returned for pop() operation.
Answer:

Related questions

22 votes
4 answers
1
4.3k views
Consider the following statements: First-in-first out types of computations are efficiently supported by STACKS. Implementing LISTS on linked lists is more efficient than implementing LISTS on an array for almost all the basic LIST operations. Implementing QUEUES on a circular array is more efficient than implementing ... $(ii)$ are true $(iii)$ and $(iv)$ are true $(ii)$ and $(iv)$ are true
asked Oct 9, 2014 in DS Kathleen 4.3k views
16 votes
2 answers
2
2k views
Consider any array representation of an $n$ element binary heap where the elements are stored from index $1$ to index $n$ of the array. For the element stored at index $i$ of the array $(i \leq n)$, the index of the parent is $i-1$ $\lfloor \frac{i}{2} \rfloor$ $\lceil \frac{i}{2} \rceil$ $\frac{(i+1)}{2}$
asked Sep 14, 2014 in DS Kathleen 2k views
0 votes
1 answer
3
169 views
What are the minimum number of pointers required to implement a stack using single ended queue ( the queue is NOT a dequeue )?
asked Jul 26, 2018 in DS kapilbk1996 169 views
0 votes
1 answer
4
237 views
Consider implementation of stack using queue by following algorithm. Let $x$ be an element to be pushed in the stack push(q1,x) { EQ(q1,x) while(q1 does not contain 1 element) { k=DQ(q1) EQ(q1,k) } } pop(q1) { DQ(q1) } How many enqueue and dequeue operations required to push $2$ and pop $2$ elements in the empty stack?
asked Apr 30, 2018 in DS himgta 237 views
...