addTwoNumbers(C)

来源:互联网 发布:js 多个异步请求 编辑:程序博客网 时间:2024/05/22 13:12
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct ListNode {
     int val;
     struct ListNode *next;
 };
 struct ListNode* addTwoNumbers(struct ListNode* l1,struct ListNode* l2){  //无头指针
   struct ListNode *p1=(struct ListNode *)malloc(sizeof(struct ListNode));
    struct ListNode *p2=(struct ListNode *)malloc(sizeof(struct ListNode));
    p1=l1;
    p2=l2;
    int num1=0;
    int num2=0;
    int sum1=0;
    int sum2=0;
    for(;p1!=NULL;p1=p1->next){
        sum1=sum1+p1->val*pow(10,num1);
        printf("sum1 =%d \n",sum1);
        num1++;
    }
    for(;p2!=NULL;p2=p2->next){
        sum2=sum2+p2->val*pow(10,num2);
        printf("sum2 =%d \n",sum2);
        num2++;
    }
    int sum3;
    sum3=sum1+sum2;
    int array=0;  //数组维数
    if(sum3==0){
       array++;
    }
    while(sum3>=0){
        sum3=sum3/10;
        array++;
    }
    sum3=sum1+sum2;
    int a[array];  //保留各位置参数
    int i;
    for(i=0;i<array;i++){
        a[i]=sum3%10;
        printf("a[%d]=%d \n",i,a[i]);
        sum3=sum3/10;
    }
    struct ListNode * nodes[array];
    for(i=0;i<array;i++){
        struct ListNode * q1=(struct ListNode *)malloc(sizeof(struct ListNode));
        q1->val=a[i];
        q1->next=NULL;
        nodes[i]=q1;
    }
    for(i=0;i<array-1;i++){
        nodes[i]->next=nodes[i+1];
    }
    return nodes[0];
 }
int main(){
    struct ListNode *e1=(struct ListNode *)malloc(sizeof(struct ListNode));
    e1->val=0;
    e1->next=NULL;
    //struct ListNode *e2=(struct ListNode *)malloc(sizeof(struct ListNode));
    //e2->val=1;
    //struct ListNode *e3=(struct ListNode *)malloc(sizeof(struct ListNode));
    //e3->val=2;
    //e1->next=e2;
    //e2->next=e3;
    //e3->next=NULL;
    struct ListNode *e4=(struct ListNode *)malloc(sizeof(struct ListNode));
    e4->val=0;
    e4->next=NULL;
    //struct ListNode *e5=(struct ListNode *)malloc(sizeof(struct ListNode));
    //e5->val=4;
    //struct ListNode *e6=(struct ListNode *)malloc(sizeof(struct ListNode));
   // e6->val=2;
   // e4->next=e5;
    //e5->next=e6;
    //e6->next=NULL;
    struct ListNode *e7=(struct ListNode *)malloc(sizeof(struct ListNode));
    e7=addTwoNumbers(e1,e4);
    for(;e7!=NULL;e7=e7->next){
        printf("h3 val=%d \n",e7->val);
    }
    return 0;
}

0 0