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

复制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; /* 将两链表相同位置的和的值,不断更新到新的b2b供应网动画懂链表 */ 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.