#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;
}
#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;
}