leetcode.1.Add Two Numbers

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;
    result->next=NULL;
    struct ListNode *p;
    p=result;
    int c=0;
    while (p1!=NULL || p2!=NULL||c!=0 )//加c为了判断5 ,5 两组进位数据,多了1进位
    {   
        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;     
        p1=(p1==NULL ? NULL : p1->next);//用于看p->next是NULL的话,指针转移到这里停了
        p2=(p2==NULL ? NULL : p2->next);
        if(p1!=NULL||p2!=NULL||c!=0)//防止最后多出来一个节点
     { p->next=(struct ListNode*)malloc(sizeof(struct ListNode)); p->next->val=0; p->next->next=NULL; p=p->next; } } return result; }

说实话刷leetcode让我怀疑我是不是适合搞这些。。。。

猜你喜欢

转载自www.cnblogs.com/yuhaowang/p/10139120.html