package Ġsolutions For Book Cr ack ing The Coding Inter view . stacks And Queues Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ /** Ċ Ġ* Ġ@ author ĠK ost ian ty n ĠP ry sia zh ny i Ċ Ġ* Ġ@ created Ġon Ġ 3 / 2 3 / 2 0 1 8 Ċ Ġ*/ Ċ Ċ open Ġclass ĠArray Stack < T >( initial Capacity : ĠInt Ġ= Ġ 0 , Ġval Ġstack Number : ĠInt Ġ= Ġ 0 ) Ġ: ĠStack < T >() Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdefault Capacity Ġ= Ġ 2 0 ĊĠĠĠ Ġvar Ġtop Pointer Ġ= Ġ- 1 Ġ// empty Ġstack ĊĠĠĠ Ġval Ġarray Buffer : ĠArray < T ?> Ġ= Ġif Ġ( initial Capacity Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠarrayOf Null s < Any >( default Capacity ) Ġas ĠArray < T ?> ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠarrayOf Null s < Any >( initial Capacity ) Ġas ĠArray < T ?> ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġarray Buffer . count Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpush ( item : ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" push () Ġitem Ġ: Ġ" Ġ+ Ġitem . toString ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( top Pointer Ġ== Ġarray Buffer . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" push Ġ- Ġstack Ġis Ġfull ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtop Pointer ++ ĊĠĠĠĠĠĠĠ Ġarray Buffer [ top Pointer ] Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġreturn Ġitem ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpop (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk Ġ= Ġpeek () ĊĠĠĠĠĠĠĠ Ġprintln (" pop () Ġitem Ġ: Ġ" Ġ+ Ġk . toString ()) ĊĠĠĠĠĠĠĠ Ġarray Buffer [ top Pointer ] Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtop Pointer -- ĊĠĠĠĠĠĠĠ Ġreturn Ġk ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpeek (): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" peek () Ġempty Ġstack ") ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġarray Buffer [ top Pointer ] !! ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty () Ġ= Ġtop Pointer Ġ== Ġ- 1 ĊĊĠĠĠ Ġfun Ġprint Stack () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarray Buffer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Ġn ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Ġ" Ġ+ Ġi . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Elements (): ĠArrayList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Array Ġ= Ġjava . util . ArrayList < T >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġarray Buffer ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Array . add ( i ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Array ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWorks Ġproperly Ġonly Ġif Ġall Ġelements Ġin ĠArray Stack Ġare Ġunique ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcontains All ( elements : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( el Ġin Ġelements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! array Buffer . contains ( el )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ Ċ } Ċ