leetcode add two numbers
本题关于singly-linked list 单链表
链表是怎么链接在一起的??怎么存储的??
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| ListNode *Solution::addTwoNumbers(ListNode *l1, ListNode *l2) { ListNode *answer = nullptr; ListNode **curr = &answer; ListNode *addr1 = l1; ListNode *addr2 = l2; int carry = 0; int sum = 0;
while (addr1 != nullptr || addr2 != nullptr ||carry>0) { if (addr1!=nullptr) { sum+=addr1->val; addr1=addr1->next; } if (addr2!=nullptr) { sum+=addr2->val; addr2=addr2->next; } sum+=carry; carry = sum / 10; (*curr) = new ListNode(sum % 10); curr = &((*curr)->next); sum=0; } return answer; }
|
解决方法:每次新建一个,匿名新建
ListNode *curr = nullptr; //指向指针的指针,一种间接寻址方式
ListNode *answer = curr;
这样赋值后,answer得到是nullptr
ListNode *answer = nullptr;
ListNode **curr = &answer; //指向指针的指针,一种间接寻址方式
这样赋值后,curr得到是answer本身的地址,而不是内容