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;
}
#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;
}
相关文章推荐
- 2014-2015 ACM-ICPC, Asia Xian Regional Contest C
- Android Service与Activity之间通信的几种方式
- Spring Boot + Elasticsearch
- Oracle系列:(15)集合查询
- Linux Jboss下logback日志框架的输出日志只保留10天的问题
- 给定二叉树的先序遍历中序遍历,求后序遍历
- ArcMap设置数据显示小数整数位的0
- POJ 1002 487-3279 水题字符串
- 19. Yii 2.0 数据分页
- 给定二叉树的先序遍历中序遍历,求后序遍历
- 虚拟机VirtualBox 5.1.0|VBOX
- Fast R-CNN论文详解
- java 使用RandomAccessFile类基于指针方式读写文件
- Sublime Text 如何连接 FTP/SFTP
- Qt QThread 爬坑之旅(一)
- 【Windows】记下几个比较常用的cmd操作命令
- 微信 公众平台开发者文档
- Activity有多个启动图标
- Linux Linux程序练习七
- linux下使用openssl对socket通信加密