Idea: Use two stacks, one for receiving (in), and the other for output (out). If out is empty before output, import the data in out.
Import Java. util. stack; // use two stacks to design a queue p142public class myqueue <t> {stack <t> In; stack <t> out; Public myqueue () {In = new stack <t> (); out = new stack <t> ();} public void enqueue (t a) {In. push (a);} public t dequeue () {shiftitems (); Return out. pop ();} public t PEEK () {shiftitems (); Return out. peek ();} private void shiftitems () {If (! Out. isempty () return; while (! In. isempty () {out. push (in. pop () ;}} public static void main (string [] ARGs) {myqueue <integer> queue = new myqueue <integer> (); queue. enqueue (1); queue. enqueue (2); queue. enqueue (3); system. out. println (queue. dequeue (); queue. enqueue (4); system. out. println (queue. dequeue (); system. out. println (queue. dequeue (); system. out. println (queue. dequeue ());}}