package Ġlinear list Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz hang ll Ġon Ġ 2 0 1 7 / 1 / 1 7 . Ċ Ġ*/ Ċ class ĠLoop Chain Ġ{ ĊĠĠĠ Ġval Ġhead Ġby Ġlazy Ġ{ ĠNode (" head ") Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Last ( Node ( i . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠaddTo First ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnode . next Ġ= Ġhead . next ĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠaddTo Last ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠNode Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp . next Ġ!= Ġhead ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnode . next Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠ Ġtemp . next Ġ= Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠaddTo Index ( element : ĠNode , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠNode ? Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . next Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp . next Ġ= Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ éģĩ åĪ° Ġtemp . next Ġ== Ġhead ĠçļĦ æĥħåĨµ åĪĻ åĨį è¿Ľ ä¸ĢæŃ¥ ï¼Į å°Ĩ Ġhead Ġ æİĴ éĻ¤ åľ¨ è®¡ æķ° ä»¥ å¤ĸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp !!. next Ġ== Ġhead ) Ġtemp Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove First () Ġ{ ĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġhead . next !!. next ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Last () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠNode Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp . next !!. next Ġ!= Ġhead ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtemp . next Ġ= Ġtemp . next !!. next ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Node ( node : ĠNode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠNode Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp . next Ġ!= Ġnode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp . next Ġ== Ġhead ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" i Ġdon 't Ġhave Ġthis Ġelement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtemp . next Ġ= Ġnode . next ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove AtIndex ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠNode ? Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġvar Ġposition Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp . next Ġ= Ġtemp . next !!. next ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ éģĩ åĪ° Ġtemp . next Ġ== Ġhead ĠçļĦ æĥħåĨµ åĪĻ åĨį è¿Ľ ä¸ĢæŃ¥ ï¼Į å°Ĩ Ġhead Ġ æİĴ éĻ¤ åľ¨ è®¡ æķ° ä»¥ å¤ĸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp !!. next Ġ== Ġhead ) Ġtemp Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlog () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠNode Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("${ temp . content } Ġ-> Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next !! ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( temp Ġ!= Ġhead ) ĊĠĠĠĠĠĠĠ Ġprint ("${ temp . content } Ġ-> Ġ") ĊĊĠĠĠĠĠĠĠ Ġprintln ("\ n ") ĊĠĠĠ Ġ} Ċ }