动画图解“两数相加”,小学生都能看懂

复制struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2){      struct ListNode *dummyHead = (struct ListNode*)malloc(sizeof(struct ListNode));      dummyHead->val = 0;      dummyHead->next = NULL     struct ListNode *node = dummyHead;      int carry = 0;  //  进位      /* 遍历两个链表 */      for (struct ListNode* p = l1, *q = l2; p != NULL || q != NULL😉 {          /* 相同位置节点值之和 */          intsum = carry;          sum += (p != NULL) ? p->val : 0;          sum += (q != NULL) ? q->val : 0;          /* 将两链表相同位置的和的值,不断更新到新的链表 */          node->next = (struct ListNode*)malloc(sizeof(struct ListNode));          node = node->next         node->val = sum % 10;          node->next = NULL         /* 进位处理,两链表不断遍历 */          carry = sum / 10;          p = (p == NULL) ? p : p->next         q = (q == NULL) ? q : q->next     }      /* 最高位之和如果大于 10,增加一位,新链表的节点值为 1 */      if(carry != 0) {          node->next = (struct ListNode*)malloc(sizeof(struct ListNode));          node = node->next         node->val = 1;          node->next = NULL     }      return dummyHead->next 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.35.36.

THE END
本站服务器由亿华云赞助提供-企业级高防云服务器