题解 | #链表相加(二)#
链表相加(二)
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;
}
};
