package Ġsolutions For Book Cr ack ing The Coding Inter view . stacks And Queues Ċ Ċ /** Ċ Ġ* Ġ@ author ĠK ost ian ty n ĠP ry sia zh ny i Ċ Ġ* Ġ@ created Ġon Ġ 4 / 2 4 / 2 0 1 8 Ċ Ġ* Ġ" Cr ack ing Ġthe ĠCoding ĠInter view " Ġtask Ġ 3 . 5 Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠTask Ġ: Implement Ġa ĠMy Queue Ġclass Ġwhich Ġimplements Ġa Ġqueue Ġusing Ġtwo Ġstacks . Ċ Ġ*/ Ċ class ĠTwo Stack s Queue < T > Ġ: ĠQueue Interface < T > Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġsize : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhead Stack . size Ġ+ Ġtail Stack . size ĊĊĠĠĠ Ġprivate Ġval Ġhead Stack Ġ= ĠArray Stack < T >() ĊĠĠĠ Ġval Ġtail Stack Ġ= ĠArray Stack < T >() ĊĊĠĠĠ Ġoverride Ġfun Ġde queue (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpeek Head () ĊĠĠĠĠĠĠĠ Ġhead Stack . pop () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġenqueue ( element : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtail Stack . push ( element ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtail Stack . isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear All () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ(! tail Stack . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Stack . pop () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpeek Head (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( head Stack . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tail Stack . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠUnsupportedOperationException (" can 't Ġpeek Head Ġfrom Ġempty Ġstack ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! tail Stack . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Stack . push ( tail Stack . pop ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhead Stack . peek () ĊĊĠĠĠ Ġ} Ċ } ĊĊ Ċ interface ĠQueue Interface < T > Ġ{ ĊĠĠĠ Ġvar Ġsize : ĠInt ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġremoves Ġelement Ġfrom Ġthe Ġhead ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġde queue (): ĠT ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinsert Ġelement Ġto Ġthe Ġtail ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġenqueue ( element : ĠT ) ĊĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean ĊĠĠĠ Ġfun Ġclear All () ĊĠĠĠ Ġfun Ġpeek Head (): ĠT Ċ Ċ }