LeetCode第二题 C解答

本文介绍了一种使用链表存储整数的方法,并实现了两个链表所表示的整数相加的功能。相加后的结果同样以链表形式返回,且结果链表中的数字顺序与输入链表相同。此外,还提供了将整数反转的辅助函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/**
计算两数的和
*/
int add(struct ListNode* l1, struct ListNode*l2){
    float v1=0, v2=0;
    int c1=0, c2=0;
    do{
        v1=v1 + l1->val*pow(10,c1);
        l1=l1->next;
        c1++;
    }while(l1 != NULL);
    do{
        v2=v2 + l2->val*pow(10,c2);
        l2=l2->next;
        c2++;
    }while(l2 != NULL);
    return (int)v1 + (int)v2;
}
/*
把和数反转
*/
int backInt(int *in){
    int i;
    int v=*in;
    *in=0;
    if(v%10)
    {
        while(v>0)
        {
            *in=(*in)*10+v%10;
            v=v/10;
           
        }
    }
    else
    {
        while(v>0)
        {
            *in=(*in)*10+v%10;
            v=v/10;
          printf("1n%d",*in);  
        }
        *in=10*(*in);
       
    }
    return *in;
}
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* addTwoNumbers(struct ListNode* l1, struct ListNode* l2) {
    int v,v0;
    int v3=add(l1, l2);
    printf("v3%d",v3);
    v= backInt(&v3);
    v0=v;
    if(v%10==0)
    {
        v/=10;
    }
    struct ListNode *p, *node;
    p=(struct ListNode*)malloc(sizeof(struct ListNode));
    p->val=v%10;
    p->next=NULL;
    printf("p%d",p->val);
    v=v/10;
    while(v>0){
        node=(struct ListNode*)malloc(sizeof(struct ListNode));
        node->val=v%10;
        v=v/10;
        node->next=p;
        p=node;
        node=NULL;
      
    }
     if(!(v0%10)&&(v0!=0))
     {
         node=(struct ListNode*)malloc(sizeof(struct ListNode));
         node->val=0;
         node->next=p;
         p=node;
         node=NULL;
     }
    
    return p;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值