@ file : Suppress (" unused ") Ċ Ċ package Ġd ork box . network . other Ċ Ċ class ĠNode < T >( val Ġvalue : ĠT ) Ġ{ ĊĠĠĠ Ġvar Ġprev : ĠNode < T >? Ġ= Ġnull ĊĠĠĠ Ġvar Ġnext : ĠNode < T >? Ġ= Ġnull Ċ } Ċ Ċ class ĠLinkedList < T > Ġ: ĠList < T > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsize Of List ĊĊĠĠĠ Ġprivate Ġvar Ġsize Of List : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġhead : ĠNode < T >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtail : ĠNode < T >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġnode AtIndex ( index : ĠInt ): ĠNode < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Position Index ( index ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġ 0 ) Ġreturn Ġnode ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġi Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException (" Index Ġwas Ġinvalid Ġor Ġdid Ġnot Ġhave Ġany Ġvalue Ġassigned ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode AtIndex ( index ). value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġnew Ġitem Ġto Ġthe Ġend Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Ġ- Ġitem Ġwe Ġare Ġadding Ġto Ġthe Ġend Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( item : ĠT ): ĠNode < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewNode Ġ= ĠNode ( item ) ĊĠĠĠĠĠĠĠ ĠaddTo Tail ( new Node ) ĊĠĠĠĠĠĠĠ Ġreturn ĠnewNode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġnew Ġitem Ġto Ġthe Ġend Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Ġ- Ġitem Ġwe Ġare Ġadding Ġto Ġthe Ġend Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠaddTo Tail ( item : ĠT ): ĠNode < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠnewNode Ġ= ĠNode ( item ) ĊĠĠĠĠĠĠĠ ĠaddTo Tail ( new Node ) ĊĠĠĠĠĠĠĠ Ġreturn ĠnewNode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġadd Ġnew Ġnode Ġto Ġhead Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠnewNode Ġ- ĠData Ġwe Ġare Ġadding Ġto Ġthe Ġbeginning Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠaddTo Head ( new Node : ĠNode < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Node Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġif Ġ( first Node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewNode . next Ġ= Ġfirst Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Node . prev Ġ= ĠnewNode ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= ĠnewNode ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= ĠnewNode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= ĠnewNode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsize Of List ++ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġnew Ġnode Ġto Ġend Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠnewNode Ġ- Ġnode Ġwe Ġare Ġadding Ġto Ġthe Ġend Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠaddTo Tail ( new Node : ĠNode < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Node Ġ= Ġtail ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewNode . prev Ġ= Ġlast Node ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Node . next Ġ= ĠnewNode ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= ĠnewNode ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= ĠnewNode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= ĠnewNode ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsize Of List ++ ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS ear ches , Ġand Ġremoves Ġand Ġitem Ġfrom Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġitem Ġ- Ġthe Ġitem Ġwe Ġare Ġremoving Ġfrom Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove ( item : ĠT ) Ġ: ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . value Ġ!= Ġitem ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġremove Node ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnothing Ġwas Ġremoved ĊĠĠĠĠĠĠĠ Ġreturn Ġsize Of List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemove Ġa Ġnode Ġfrom Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnode Ġ- ĠNode Ġwe Ġare Ġremoving ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ- Ġsize Ġof Ġlist Ġafter Ġremoval ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove Node ( node : ĠNode < T >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprev Ġ= Ġnode . prev ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġnode . next ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ!= Ġnull Ġ&& Ġnext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġin Ġthe Ġmiddle . ĠLink Ġthe Ġprevious Ġto Ġthe Ġnext Ġand Ġvice Ġvers a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext . prev Ġ= Ġprev ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Ġ== Ġnull Ġ&& Ġnext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġhead . ĠUn link Ġand Ġmake Ġthe Ġnext Ġthe Ġnew Ġhead ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext . prev Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= Ġnext ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Ġ!= Ġnull Ġ&& Ġnext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġtail . ĠUn link Ġand Ġmake Ġthe Ġprev Ġthe Ġnew Ġtail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= Ġprev ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Ġ== Ġnull Ġ&& Ġnext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġonly Ġnode Ġin Ġthe Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnode . prev Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġnode . next Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsize Of List -- ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsize Of List ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear s Ġall Ġof Ġthe Ġcontents Ġof Ġthis Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġremove All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemove Ġeverything Ġfrom Ġthe Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġremove All () Ġ{ ĊĠĠĠĠĠĠĠ Ġhead Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtail Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMove Ġnode Ġto Ġfront Ġof Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnode Ġ- ĠNode Ġwe Ġare Ġmoving ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmove Node To Front ( node : ĠNode < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprev Ġ= Ġnode . prev ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġnode . next ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ== Ġnull Ġ&& Ġnext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġhead . ĠDo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Ġ== Ġnull Ġ&& Ġnext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġhead . ĠDo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ!= Ġnull Ġ&& Ġnext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġin Ġthe Ġmiddle . ĠLink Ġthe Ġprevious Ġto Ġthe Ġnext Ġand Ġvice Ġvers a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext . prev Ġ= Ġprev ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Ġ!= Ġnull Ġ&& Ġnext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġtail . ĠUn link Ġand Ġmake Ġthe Ġprev Ġthe Ġnew Ġtail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= Ġprev ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnode . prev Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġnode . next Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġhead Ġ= Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġnode Ġto Ġfront Ġof Ġlist Ġor Ġmoves Ġto Ġfront Ġof Ġlist Ġif Ġit Ġis Ġin Ġthe Ġlist ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnode Ġ- ĠNode Ġwe Ġare Ġadding Ġor Ġmoving ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠSize Ġof Ġlist ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Or Move Node To Front ( node : ĠNode < T >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprev Ġ= Ġnode . prev ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġnode . next ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ== Ġnull Ġ&& Ġnext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Ġ== Ġhead ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// We Ġare Ġthe Ġhead . ĠDo ĠNothing ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize Of List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġnot Ġlinked Ġto Ġanything , Ġso Ġneed Ġto Ġbe Ġadded Ġto Ġthe Ġhead Ġof Ġthe Ġlist . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Head ( node ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize Of List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ== Ġnull Ġ&& Ġnext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġhead . ĠDo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsize Of List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( prev Ġ!= Ġnull Ġ&& Ġnext Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġthe Ġtail . ĠUn link Ġand Ġmake Ġthe Ġprev Ġthe Ġnew Ġtail ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtail Ġ= Ġprev ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( prev Ġ!= Ġnull Ġ&& Ġnext Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġare Ġin Ġthe Ġmiddle . ĠLink Ġthe Ġprevious Ġto Ġthe Ġnext Ġand Ġvice Ġvers a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev . next Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext . prev Ġ= Ġprev ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhead !!. prev Ġ= Ġnode ĊĠĠĠĠĠĠĠ Ġnode . next Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġnode . prev Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġhead Ġ= Ġnode ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsize Of List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠforEach ( function : Ġ( T ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction ( node . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Position Index ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġindex Ġin Ġ 0 .. size Of List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġout Of Bounds Msg ( index : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Index : Ġ$ index , ĠSize : Ġ$ size Of List " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Position Index ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Position Index ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIndex OutOfBoundsException ( out Of Bounds Msg ( index )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreverse Iterator (): ĠList Iterator < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Iterator ( size Of List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġiterator (): ĠList Iterator < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Iterator ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlist Iterator (): ĠList Iterator < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlist Iterator ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlist Iterator ( index : ĠInt ): ĠList Iterator < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Position Index ( index ) ĊĠĠĠĠĠĠĠ Ġreturn ĠList Itr ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠList Itr Ġinternal Ġconstructor ( private Ġvar Ġnext Index : ĠInt ) Ġ: ĠList Iterator < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlast Returned : ĠNode < T >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġnext : ĠNode < T >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= Ġif Ġ( next Index Ġ== Ġsize Of List ) Ġnull Ġelse Ġnode AtIndex ( next Index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Next (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext Index Ġ< Ġsize Of List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext (): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Returned Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= Ġnext !!. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Index ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlast Returned !!. value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhas Previous (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext Index Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprevious (): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Previous ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch ElementException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Ġ= Ġif Ġ( next Ġ== Ġnull ) Ġtail Ġelse Ġnext !!. prev ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Returned Ġ= Ġnext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnext Index -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlast Returned !!. value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnext Index (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext Index ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġprevious Index (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext Index Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġs Ġ= Ġ"[" ĊĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ+= Ġ"${ node . value }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Ġ+= Ġ", Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ s ]" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains ( element : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . value Ġ!= Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnothing Ġwas Ġfound ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcontains All ( elements : ĠCollection < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfound All Items : ĠBoolean ĊĠĠĠĠĠĠĠ Ġelements . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfound All Items Ġ= Ġcontains ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! found All Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġhead Ġ== Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġindex Ġof Ġthe Ġfirst Ġoccurrence Ġof Ġthe Ġspecified Ġelement Ġin Ġthe Ġlist , Ġor Ġ- 1 Ġif Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġelement Ġis Ġnot Ġcontained Ġin Ġthe Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠindexOf ( element : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . value Ġ!= Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnothing Ġwas Ġfound ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġindex Ġof Ġthe Ġlast Ġoccurrence Ġof Ġthe Ġspecified Ġelement Ġin Ġthe Ġlist , Ġor Ġ- 1 Ġif Ġthe Ġspecified ĊĠĠĠĠ Ġ* Ġelement Ġis Ġnot Ġcontained Ġin Ġthe Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġlast IndexOf ( element : ĠT ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġnode Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( node Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node . value Ġ!= Ġelement ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġnode . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnothing Ġwas Ġfound ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ== Ġ 0 ) Ġ- 1 Ġelse Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġview Ġof Ġthe Ġportion Ġof Ġthis Ġlist Ġbetween Ġthe Ġspecified Ġ[ from Index ] Ġ( inclusive ) Ġand Ġ[ to Index ] Ġ( exclusive ). ĊĠĠĠĠ Ġ* ĠThe Ġreturned Ġlist Ġis Ġbacked Ġby Ġthis Ġlist , Ġso Ġnon - struct ural Ġchanges Ġin Ġthe Ġreturned Ġlist Ġare Ġreflected Ġin Ġthis Ġlist , Ġand Ġvice - ver sa . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠStructural Ġchanges Ġin Ġthe Ġbase Ġlist Ġmake Ġthe Ġbehavior Ġof Ġthe Ġview Ġundefined . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġsub List ( from Index : ĠInt , Ġto Index : ĠInt ): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠNotImplementedError (" This Ġfunctionality Ġis Ġnot Ġimplemented ") ĊĠĠĠ Ġ} Ċ } Ċ