package Ġle et code . problem 0 0 0 2 Ċ Ċ class ĠAdd Two Numbers Ġ{ ĊĠĠĠ Ġfun Ġadd Two Numbers ( l 1 : ĠListNode ?, Ġl 2 : ĠListNode ?): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( l 1 ) ĊĠĠĠĠĠĠĠ Ġrequire NotNull ( l 2 ) ĊĠĠĠĠĠĠĠ Ġvar Ġhead : ĠListNode ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġpointer : ĠListNode ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġinput Pointer 1 Ġ= Ġl 1 ĊĠĠĠĠĠĠĠ Ġvar Ġinput Pointer 2 Ġ= Ġl 2 ĊĠĠĠĠĠĠĠ Ġvar Ġshould Add Next Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġwhile Ġ( input Pointer 1 Ġ!= Ġnull Ġ|| Ġinput Pointer 2 Ġ!= Ġnull Ġ|| Ġshould Add Next ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsum Ġ= Ġ( input Pointer 1 ?. ` val ` Ġ?: Ġ 0 ) Ġ+ Ġ( input Pointer 2 ?. ` val ` Ġ?: Ġ 0 ) Ġ+ Ġif Ġ( should Add Next ) Ġ 1 Ġelse Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshould Add Next Ġ= Ġsum Ġ/ Ġ 1 0 Ġ> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( head Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= ĠListNode ( sum . rem ( 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Ġ= Ġhead ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire NotNull ( pointer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer . next Ġ= ĠListNode ( sum . rem ( 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpointer Ġ= Ġpointer . next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Pointer 1 Ġ= Ġinput Pointer 1 ?. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Pointer 2 Ġ= Ġinput Pointer 2 ?. next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġhead ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠListNode ( var Ġ` val `: ĠInt ) Ġ{ ĊĠĠĠ Ġvar Ġnext : ĠListNode ? Ġ= Ġnull Ċ } Ċ