美文网首页
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. 两数相加

    给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表...

  • 2. 两数相加

  • 2. 两数相加

    一、题目原型: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加...

  • 2. 两数相加

    题目 解析 本题只需要遍历一下单链表,将单链表的值添加到StringBuilder对象后然后转化成数字进行运算再反...

  • 2.两数相加

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

  • 2. 两数相加

    https://leetcode-cn.com/problems/add-two-numbers/descript...

  • 2. 两数相加

    补充:我们现在的这种第一个节点是头节点。所以要 root.next如果我的 不想用这种方式 会遇到这样的问题。

  • 2. 两数相加

    链接:https://leetcode-cn.com/problems/add-two-numbers/ 代码地址...

  • 2.两数相加

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只...

  • 2. 两数相加

    题目 分析 解题方案: 初等数学 我们使用变量来跟踪进位,并从包含最低有效位的表头开始模拟逐位相加的过程。 就像你...

网友评论

      本文标题:2.两数相加

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