\begin{algorithm}
        \caption{Stack Implemented using Two Queues}
        \begin{algorithmic}
        \REQUIRE $Q_1$ and $Q_2$ are two queues.
        \ENSURE Implementation of stack operations with $Q_1$ and $Q_2$ .
        \STATE \COMMENT {Calculate the number of elements in a queue}
        \PROCEDURE{QueueSize}{$Q$}
            \IF{$Q.head \le Q.tail$}
                \RETURN $Q.tail - Q.head$
            \ENDIF
            \RETURN $Q.length + Q.tail - Q.head$
        \ENDPROCEDURE
        \STATE
        \STATE $Q_a = Q_1$ \COMMENT{the active queue}
        \STATE $Q_i = Q_2$ \COMMENT{the inactive queue}
        \STATE \COMMENT{Swap the active and inactive queue}
        \PROCEDURE{Toggle}{}
            \STATE $tmp = Q_a$
            \STATE $Q_a = Q_i$
            \STATE $Q_i = tmp$
        \ENDPROCEDURE
        \STATE
        \PROCEDURE{Push}{$x$}
            \STATE \CALL{Enqueue}{$Q_a, x$}
        \ENDPROCEDURE
        \STATE
        \PROCEDURE{Pop}{}
            \WHILE{\CALL{QueueSize}{$Q_a$} $>1$}
                \STATE $x =$ \CALL{Dequeue}{$Q_a$}
                \STATE \CALL{Enqueue}{$Q_i, x$}
            \ENDWHILE
            \STATE \CALL{Toggle}{}
            \RETURN \CALL{Dequeue}{$Q_i$}
        \ENDPROCEDURE
        \end{algorithmic}
        \end{algorithm}