LeetCode 第二题两数相加 C语言

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) 
{
    int Sum = 0,Carry = 0;
    struct ListNode *PL1 = l1,*PL2 = l2;
    struct ListNode *NewHead,*P1,*P2;
    int Tem1 = l1->val,Tem2 = l2->val;
    
    NewHead = (struct ListNode *)malloc(sizeof (struct ListNode));
    
    P1= NewHead;
    
    P2 = P1;
    
    while((PL1 != NULL) || (PL2 != NULL) || Carry != 0)
    {
        Sum = Tem1 + Tem2 + Carry;
        
        if(Sum >= 10)
            Carry = 1;
        else 
            Carry = 0;
        
        P2->val = Sum % 10;
        
        P1 = (struct ListNode *)malloc(sizeof (struct ListNode));
        
        P2->next = P1;
        
        P2 = P1;
        
        if(PL1 == NULL)
        {           
            Tem1 = 0;
            
        }
        else
        {
            
            PL1 = PL1->next;
            
            if(PL1 != NULL)
                Tem1 = PL1->val;
            else 
                Tem1 = 0;
            
        }
        if(PL2 == NULL)
        {
            
            Tem2 = 0;
            
        }
        else
        {
            PL2 = PL2->next;
            
            if(PL2 != NULL)
                Tem2 = PL2->val;
            else 
                Tem2 = 0;
            
        }
    }
    
    P1->next = NULL;
    
    P1= NewHead;
    
    while(P1->next->next != NULL)
    {
        
        P1 = P1->next;
        
    }
        
    P2 = P1->next;
    
    free(P2);
    
    P1->next = P1->next->next;
        
    return NewHead;
    
}

 

相关文章:

  • 2021-04-29
  • 2021-10-12
  • 2022-12-23
  • 2021-04-06
  • 2020-07-15
  • 2021-11-15
  • 2021-08-29
猜你喜欢
  • 2022-01-11
  • 2021-12-21
  • 2021-06-19
  • 2021-09-26
  • 2021-11-11
  • 2021-04-03
  • 2022-12-23
相关资源
相似解决方案