题目链接:https://leetcode-cn.com/problems/add-two-numbers/
解题思路:
同时遍历给出的链表,使用一个临时变量来存储中间计算数值;
自我总结点:
1. 需要去看看C++结构体里面写函数的语法
2. 熟悉LeetCode的写题格式
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
/*
99+9 = 108
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *l3, *p;
bool f = true;
int tmp = 0;
for(ListNode *i = l1, *j = l2; i != nullptr || j != nullptr;) {
int tmp_1 = 0, tmp_2 = 0;
if(i != nullptr) {
tmp_1 = i->val;
i = i->next;
}
if(j != nullptr) {
tmp_2 = j->val;
j=j->next;
}
tmp += tmp_1 + tmp_2;
if(f) {
l3 = new ListNode(tmp%10);
p = l3;
f = false;
tmp /= 10;
continue;
}
ListNode *permt;
permt = new ListNode(tmp%10);
p->next = permt;
p = permt;
tmp /= 10;
}
if(tmp != 0) {
ListNode *permt;
permt = new ListNode(tmp);
p->next = permt;
}
return l3;
}
};