题解 | #链表相加(二)#
链表相加(二)
https://www.nowcoder.com/practice/c56f6c70fb3f4849bc56e33ff2a50b6b
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : val(x), next(nullptr) {} * }; */ #include <iostream> class Solution { public: ListNode* reverseLinklist(ListNode* head) { //逆置链表 ListNode* cur = head, *pre=NULL, *temp = NULL; while(cur){ temp = cur->next; cur->next = pre; pre = cur; cur = temp; } return pre; } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head1 ListNode类 * @param head2 ListNode类 * @return ListNode类 */ ListNode* addInList(ListNode* head1, ListNode* head2) { // write code here ListNode *head3 = reverseLinklist(head1); ListNode *head4 = reverseLinklist(head2); int count = 0 ; // 记录相加的值 ListNode *dummy = new ListNode(0);//虚拟头结点 ListNode *p = dummy; while(head3 || head4 || count) { if(head3) { count += head3->val; head3 = head3->next; } if(head4) { count += head4->val; head4 = head4->next; } p->next = new ListNode(count%10); count = count /10; p = p->next; } ListNode *ars = reverseLinklist(dummy->next); return ars; } };