思路分析
给的是一个结构体,居然还有构造函数,C++这个特性我都快忘了。赶紧去查了查。
结构体实例、共用体实例和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体、共用体默认成员为public,而类默认成员是private型的。
没什么特别的,链表实现加法,注意进位。倒是好久没用指针,在语法上多花点时间。
代码实现
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode* head = new ListNode(0);
ListNode* p = head;
int a;
int b;
int c = 0;
// 有一个不为空就继续做
while ((l1 != NULL) || (l2 != NULL)){
if (l1 != NULL){
a = l1->val;
l1 = l1->next;
}else{
a = 0;
}
if (l2 != NULL){
b = l2->val;
l2 = l2->next;
}else{
b = 0;
}
int sum = a + b + c;
c = sum / 10;
sum %= 10;
ListNode *tmp = new ListNode(sum);
p->next = tmp;
p = p->next;
}
// 最高位是否需要进位
if (c > 0) {
ListNode *tmp=new ListNode(c);
p->next = tmp;
p = p->next;
}
return head->next;
}
};