/** Ċ Ġ* ĠExample : Ċ Ġ* Ġvar Ġli Ġ= ĠListNode ( 5 ) Ċ Ġ* Ġvar Ġv Ġ= Ġli .` val ` Ċ Ġ* ĠDefinition Ġfor Ġsing ly - linked Ġlist . Ċ Ġ* Ġclass ĠListNode ( var Ġ` val `: ĠInt ) Ġ{ Ċ Ġ* ĠĠĠĠ Ġvar Ġnext : ĠListNode ? Ġ= Ġnull Ċ Ġ* Ġ} Ċ Ġ*/ Ċ class ĠSolution Ġ{ ĊĠĠĠ Ġfun Ġadd Two Numbers ( l 1 : ĠListNode ?, Ġl 2 : ĠListNode ?): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġans : ĠListNode ? Ġ= ĠListNode ( 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġnode 1 : ĠListNode ? Ġ= Ġl 1 ĊĠĠĠĠĠĠĠ Ġvar Ġnode 2 : ĠListNode ? Ġ= Ġl 2 ĊĠĠĠĠĠĠĠ Ġvar Ġnode 3 : ĠListNode ? Ġ= Ġans ĊĠĠĠĠĠĠĠ Ġvar Ġcarry : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġwhile Ġ( node 1 Ġ!= Ġnull Ġ&& Ġnode 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum : ĠInt Ġ= Ġnode 1 !! .` val ` Ġ+ Ġnode 2 !! .` val ` Ġ+ Ġcarry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. ` val ` Ġ= Ġsum Ġ% Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcarry Ġ= Ġsum Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node 1 ?. next Ġ== Ġnull Ġ&& Ġnode 2 ?. next Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( carry Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. next Ġ= ĠListNode ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġans ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. next Ġ= ĠListNode ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 Ġ= Ġnode 3 ?. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 1 Ġ= Ġnode 1 ?. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 2 Ġ= Ġnode 2 ?. next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġwhile Ġ( node 1 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum : ĠInt Ġ= Ġnode 1 !! .` val ` Ġ+ Ġcarry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. ` val ` Ġ= Ġsum Ġ% Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcarry Ġ= Ġsum Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node 1 ?. next Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( carry Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. next Ġ= ĠListNode ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġans ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. next Ġ= ĠListNode ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 Ġ= Ġnode 3 ?. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 1 Ġ= Ġnode 1 ?. next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġwhile Ġ( node 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum : ĠInt Ġ= Ġnode 2 !! .` val ` Ġ+ Ġcarry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. ` val ` Ġ= Ġsum Ġ% Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcarry Ġ= Ġsum Ġ/ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node 2 ?. next Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( carry Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. next Ġ= ĠListNode ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġans ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 ?. next Ġ= ĠListNode ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 3 Ġ= Ġnode 3 ?. next ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode 2 Ġ= Ġnode 2 ?. next ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġreturn Ġans ĊĠĠĠ Ġ} Ċ } ĊĊ