美文网首页
2.两数相加

2.两数相加

作者: 无名的殇 | 来源:发表于2018-05-11 16:30 被阅读0次

    题目


    思路
    1.记录返回结构体
    2.两个结构体的两位数相加,记录进位
    3.位移结构体,赋值
    代码

    struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
        
        struct ListNode *p1 = l1;
        struct ListNode *p2 = l2;
        struct ListNode *result = (struct ListNode *)malloc(sizeof(struct ListNode));//设置返回的结构体
        result->val = 0;
        
        struct ListNode *p = NULL;//进度结构体,记录进度
        int c = 0;
        while(p1 != NULL || p2 != NULL || c != 0) {//判断结构体和进位,如果有,继续循环
            if (p == NULL) {
                p = result;
            } else {
                //位移记录结构体
                p->next = (struct ListNode *)malloc(sizeof(struct ListNode));
                p->next->val = 0;
                p = p->next;
            }
            int a = (p1 == NULL ? 0 : p1->val);
            int b = (p2 == NULL ? 0 : p2->val);
            int s = (a + b + c) % 10;//当前结构体值
            c = (a + b + c) / 10;//获取进位
            p->val = s;
            p->next = NULL;
            p1 = (p1 == NULL ? NULL : p1->next);
            p2 = (p2 == NULL ? NULL : p2->next);
        }
        return result;
    }
    

    相关文章

      网友评论

          本文标题:2.两数相加

          本文链接:https://www.haomeiwen.com/subject/wbgfdftx.html