A learning problem - stay button

Has not done, verify finished, save the next;

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */

 

struct ListNode* addTwoNumbers(struct ListNode* L1, struct ListNode* L2){
    
    int flag1 = 0;
    int flag2 = 0;
    struct ListNode* ret = (struct ListNode *)malloc(sizeof(struct ListNode));
    memset(&ret, 0, sizeof(struct ListNode));
    struct ListNode* cur = ret;
    do{
        int tmp = 0;
        if(L1 != NULL && L2 != NULL)
        {
            tmp = L1->val + L2->val + flag1;
        } else if(L1 == NULL)
        {
            tmp = L2->val + flag1;
        } else if(L2 == NULL)
        {
            tmp = L1->val + flag1;
        } else {
            tmp = flag1;
        }
        if(tmp >= 10)
        {
            tmp = tmp - 10;
            flag2 = 1;
        }
        
        cur->val = tmp;
        cur->next = NULL;
        flag1 = flag2;
        flag2 = 0;
        L1 = L1->next;
        L2 = L2->next;

        struct ListNode *one = (struct ListNode*)malloc(sizeof(struct ListNode));
        memset(one, 0, sizeof(struct ListNode));
        cur->next = one;
        cur = cur->next;

    }while ((!L1->next) &&(!L2->next));
    
    free(cur);
}

 

Published 63 original articles · won praise 56 · views 310 000 +

Guess you like

Origin blog.csdn.net/yuyantai1234/article/details/104822703