/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ ListNode* reList(ListNode* head) { if (!head)return NULL; ListNode* pre = NULL; ListNode* cur = head; while (cur) { ListNode* tem = cur->next; cur->next = pre; pre = cur; cur = tem; } return pre; } ListNode* addInList(ListNode* head1, ListNode* head2) { // write code here if (!head1)return head2; if (!head2)return head1; ListNode* rhead1 = reList(head1); ListNode* rhead2 = reList(head2); ListNode* anshead = new ListNode(0); ListNode* p = anshead; int tem=0; while (rhead1 || rhead2) { int val = tem; if(rhead1) { val = val + rhead1->val; rhead1 = rhead1->next; } if(rhead2) { val = val + rhead2->val; rhead2 = rhead2->next; } tem = val/10; p->next = new ListNode(val%10); p = p->next; } if(tem > 0) p->next = new ListNode(tem); return reList(anshead->next); } };