class Solution {
public:
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
ListNode *h = new ListNode(0);
ListNode *p = h;
int temp = 0;
while(l1 != NULL && l2 != NULL) {
p->next = new ListNode((temp + l1->val + l2->val) % 10);
temp = (temp + l1->val + l2->val) / 10;
p = p->next;
l1 = l1->next;
l2 = l2->next;
}
while(l1 != NULL) {
p->next = new ListNode((temp + l1->val) % 10);
temp = (temp + l1->val) / 10;
p = p->next;
l1 = l1->next;
}
while(l2 != NULL) {
p->next = new ListNode((temp + l2->val) % 10);
temp = (temp + l2->val) / 10;
p = p->next;
l2 = l2->next;
}
if(temp) {
p->next = new ListNode(1);
}
return h->next;
}
};
[指针]
&取地址符 ( &a取变量的地址)
*取值运算符 (*p取指针的值)
指针变量是用来存储地址的变量
指针肯定有对应的变量(想象成一个箭头)
每个变量都可以用指针指向它
eg:int x;
int *p=&x;
指针变量不能直接赋值
int *p;
p=10010;(报错)
&(*x)错误
【指针链表】
遍历链表的方法:
while (l1 != NULL & l2 != NULL){
//对l1_>var l2_>var进行操作
l1 = l1_>next;
l2 = l2_>next;
}
新建链表:
listnode *h = new listnode(0);
listnode *p = h;
之后就是不断p->next = new listnode(val) + p = p->next