public static void Main()
Console.WriteLine("Linked list 1: [3,4,2] stored in reverse order");
ListNode l0 = new ListNode(3);
ListNode l1 = new ListNode(4, l0);
ListNode l2 = new ListNode(2, l1);
Console.WriteLine("Linked list 2: [4,6,5] stored in reverse order");
ListNode l6 = new ListNode(4);
ListNode l7 = new ListNode(6, l6);
ListNode l8 = new ListNode(5, l7);
ListNode l = Program.AddTwoNumbers(l2,l8);
Console.WriteLine("Results");
public static ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
ListNode head = new ListNode((l.val + r.val) % 10);
int remainder = (l.val + r.val) / 10;
while ( l != null && r != null)
tail.next = new ListNode((l.val + r.val + remainder) % 10);
remainder = (l.val + r.val + remainder) / 10;
tail.next = new ListNode((l.val + remainder) % 10);
remainder = (l.val + remainder) / 10;
tail.next = new ListNode((r.val + remainder) % 10);
remainder = (r.val + remainder) / 10;
tail.next = new ListNode(1);
public ListNode(int _val, ListNode _next = null)
public static void Print(ListNode node)
Console.WriteLine(node.val);