您的位置:首页 > 其它

addTwoNumbers(C)

2016-09-07 22:09 363 查看
#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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: