package Ġlinear list Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz hang ll Ġon Ġ 2 0 1 7 / 1 / 2 1 . Ċ Ġ*/ Ċ class ĠDouble Chain Ġ{ ĊĠĠĠ Ġval Ġhead Ġby Ġlazy Ġ{ ĠDouble Node (" head ") Ġ} ĊĠĠĠ Ġval Ġprior Ġby Ġlazy Ġ{ ĠDouble Node (" prior ") Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġprior ĊĠĠĠĠĠĠĠ Ġprior . last Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 4 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġadd Element To First ( Double Node ( i . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Element To Last ( Double Node ( i . toString ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Element To First ( element : ĠDouble Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . next Ġ= Ġhead . next ĊĠĠĠĠĠĠĠ Ġhead . next !!. last Ġ= Ġelement ĊĊĠĠĠĠĠĠĠ Ġelement . last Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġelement ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Element To Last ( element : ĠDouble Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġelement . last Ġ= Ġprior . last ĊĠĠĠĠĠĠĠ Ġprior . last !!. next Ġ= Ġelement ĊĊĠĠĠĠĠĠĠ Ġelement . next Ġ= Ġprior ĊĠĠĠĠĠĠĠ Ġprior . last Ġ= Ġelement ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove First Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( head . next Ġ== Ġprior ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" no Ġelement Ġcontains ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead . next !!. next !!. last Ġ= Ġhead ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġhead . next !!. next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Last Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( prior . last Ġ== Ġhead ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" no Ġelement Ġcontains ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprior . last !!. last !!. next Ġ= Ġprior ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprior . last Ġ= Ġprior . last !!. last ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreverse () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( head . next Ġ== Ġprior ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" no Ġelement Ġcontains ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġtemp Ġ= Ġhead . next ĊĊĠĠĠĠĠĠĠ Ġhead . next Ġ= Ġprior ĊĠĠĠĠĠĠĠ Ġprior . last Ġ= Ġhead ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp Ġ!= Ġprior ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġtemp !!. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Element To First ( temp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġnext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Element ( element : ĠDouble Node ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġ=== Ġhead Ġ|| Ġelement Ġ=== Ġprior ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" can 't Ġremove Ġhead Ġor Ġprior ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelement . last !!. next Ġ= Ġelement . next ĊĠĠĠĠĠĠĠ Ġelement . next !!. last Ġ= Ġelement . last ĊĊĠĠĠĠĠĠĠ Ġelement . last Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġelement . next Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlog () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtemp : ĠDouble Node ? Ġ= Ġhead ĊĠĠĠĠĠĠĠ Ġwhile Ġ( temp Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("${ temp . content } Ġ-> Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Ġ= Ġtemp . next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ("\ n ") ĊĠĠĠ Ġ} Ċ }