思路分析

给的是一个结构体,居然还有构造函数,C++这个特性我都快忘了。赶紧去查了查。
结构体实例、共用体实例和类实例的初始化方法完全相同,二者都可以应用于继承层次中。不同点是结构体、共用体默认成员为public,而类默认成员是private型的。
没什么特别的,链表实现加法,注意进位。倒是好久没用指针,在语法上多花点时间。

代码实现

  1. /**
  2. * Definition for singly-linked list.
  3. * struct ListNode {
  4. * int val;
  5. * ListNode *next;
  6. * ListNode(int x) : val(x), next(NULL) {}
  7. * };
  8. */
  9. class Solution {
  10. public:
  11. ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
  12. ListNode* head = new ListNode(0);
  13. ListNode* p = head;
  14. int a;
  15. int b;
  16. int c = 0;
  17. // 有一个不为空就继续做
  18. while ((l1 != NULL) || (l2 != NULL)){
  19. if (l1 != NULL){
  20. a = l1->val;
  21. l1 = l1->next;
  22. }else{
  23. a = 0;
  24. }
  25. if (l2 != NULL){
  26. b = l2->val;
  27. l2 = l2->next;
  28. }else{
  29. b = 0;
  30. }
  31. int sum = a + b + c;
  32. c = sum / 10;
  33. sum %= 10;
  34. ListNode *tmp = new ListNode(sum);
  35. p->next = tmp;
  36. p = p->next;
  37. }
  38. // 最高位是否需要进位
  39. if (c > 0) {
  40. ListNode *tmp=new ListNode(c);
  41. p->next = tmp;
  42. p = p->next;
  43. }
  44. return head->next;
  45. }
  46. };