// ĠProblem ĠStatement Ċ Ċ // ĠYou Ġare Ġgiven Ġtwo Ġnon - empty Ġlinked Ġlists Ġrepresenting Ġtwo Ġnon - negative Ġintegers . Ċ // ĠThe Ġdigits Ġare Ġstored Ġin Ġreverse Ġorder Ġand Ġeach Ġof Ġtheir Ġnodes Ġcontain Ġa Ġsingle Ġdigit . Ċ // ĠAdd Ġthe Ġtwo Ġnumbers Ġand Ġreturn Ġit Ġas Ġa Ġlinked Ġlist . Ċ // Ċ // ĠYou Ġmay Ġassume Ġthe Ġtwo Ġnumbers Ġdo Ġnot Ġcontain Ġany Ġleading Ġzero , Ġexcept Ġthe Ġnumber Ġ 0 Ġitself . Ċ // Ċ package Ġorg . algorithm . problems Ċ Ċ import Ġorg . algorithm . shared . ListNode Ċ Ċ class Ġ` 0 0 0 3 _ add _ two _ numbers ` Ġ{ ĊĠĠĠ Ġfun Ġadd Two Numbers ( l 1 : ĠListNode ?, Ġl 2 : ĠListNode ?): ĠListNode ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġir l 1 : ĠListNode ? Ġ= Ġl 1 ; ĊĠĠĠĠĠĠĠ Ġvar Ġir l 2 : ĠListNode ? Ġ= Ġl 2 ; ĊĠĠĠĠĠĠĠ Ġval Ġdummy : ĠListNode ? Ġ= ĠListNode (- 1 ); ĊĠĠĠĠĠĠĠ Ġvar Ġit : ĠListNode ? Ġ= Ġdummy ; ĊĠĠĠĠĠĠĠ Ġvar Ġcarry : ĠInt Ġ= Ġ 0 ; ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( irl 1 Ġ!= Ġnull Ġ|| Ġir l 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv 1 : ĠInt Ġ= Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġv 2 : ĠInt Ġ= Ġ 0 ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( irl 1 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 1 Ġ= Ġir l 1 .` val `; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir l 1 Ġ= Ġir l 1 . next ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( irl 2 Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv 2 Ġ= Ġir l 2 .` val `; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġir l 2 Ġ= Ġir l 2 . next ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsum : ĠInt Ġ= Ġv 1 Ġ+ Ġv 2 Ġ+ Ġcarry ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sum Ġ> Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcarry Ġ= Ġ 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsum Ġ= Ġsum Ġ% Ġ 1 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcarry Ġ= Ġ 0 ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. next Ġ= ĠListNode ( sum ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ= Ġit ?. next ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( carry Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. next Ġ= ĠListNode ( carry ); ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdummy ?. next ; ĊĠĠĠ Ġ} Ċ }