Question: You are given two linked lists representing two non-negative numbers. 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. input: (2-> 4-> 3) + (5-> 6-> 4) Output: 7-> 0-> 8 an1_1: [cpp]/*** Definition for singly-linked list. * struct ListNode {* int val; * ListNode * next; * ListNode (int x): va L (x), next (NULL) {}*}; */class Solution {public: ListNode * addTwoNumbers (ListNode * l1, ListNode * l2) {// Start typing your C/C ++ solution below if (l1 = NULL & l2 = NULL) {return NULL ;} listNode * retList = new ListNode (0); ListNode * tmpList = retList; ListNode * head1 = l1; ListNode * head2 = l2; int carry = 0; while (head1! = NULL & head2! = NULL) {int sum = carry + head1-> val + head2-> val; carry = sum/10; tmpList-> next = new ListNode (sum % 10 ); tmpList = tmpList-> next; head1 = head1-> next; head2 = head2-> next;} while (head1! = NULL) {int sum = carry + head1-> val; carry = sum/10; tmpList-> next = new ListNode (sum % 10); tmpList = tmpList-> next; head1 = head1-> next;} while (head2! = NULL) {int sum = carry + head2-> val; carry = sum/10; tmpList-> next = new ListNode (sum % 10); tmpList = tmpList-> next; head2 = head2-> next;} if (carry = 1) {tmpList-> next = new ListNode (1);} tmpList = retList; retList = retList-> next; delete tmpList; return retList ;}};