\begin{algorithm}
\caption{Queue Implemented using Two Stacks}
\begin{algorithmic}
\REQUIRE $S_1$ and $S_2$ are two stacks.
\ENSURE Implementation of queue operations with $S_1$ and $S_2$ .
\PROCEDURE{Enqueue}{$S_1, S_2, x$}
\STATE \CALL{Push}{$S_2, x$}
\ENDPROCEDURE
\STATE
\PROCEDURE{Dequeue}{$S_1, S_2$}
\IF{\CALL{StackEmpty}{$S_1$}}
\WHILE{\NOT \CALL{StackEmpty}{$S_2$}}
\STATE $x =$ \CALL{Pop}{$S_2$}
\STATE \CALL{Push}{$S_1, x$}
\ENDWHILE
\ENDIF
\RETURN \CALL{Pop}{$S_1$}
\ENDPROCEDURE
\end{algorithmic}
\end{algorithm}