你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
输入:
2,4,3
5,6,4
输出:
7,0,8
#include<bits/stdc++.h>
using namespace std;
typedef struct LNode
{int data;
struct LNode *next;
}LNode,*LinkList;
void create(LinkList &L,int a[])
{L=new LNode;
LNode *temp=L;int i;
L->next=NULL;
i=0;
while(a[i]!=-1)
{
LNode *p=new LNode;
p->data=a[i];
p->next=temp->next;
temp->next=p;
temp=p;
i++;
}
}
void xiangjia(LinkList &L1,LinkList &L2,LinkList &L3)
{int flag=0,i;
LinkList p1=L1->next;
LinkList p2=L2->next;
LinkList p;
L3=new LNode;
L3->next=NULL;
p=L3;
while(p1&&p2)
{LinkList q=new LNode;
q->next=NULL;
p->next=q;
p=q;
p->data=(p1->data+p2->data+flag)%10;
flag=(p1->data+p2->data+flag)/10;
p1=p1->next;
p2=p2->next;}
if(p1!=NULL&&p2==NULL)
{while(p1)
{LinkList q=new LNode;
q->next=NULL;
p->next=q;
p=q;
p->data=(p1->data+flag)%10;
flag=(p1->data+flag)/10;
p1=p1->next;
}}
if(p2!=NULL&&p1==NULL)
{while(p2)
{LinkList q=new LNode;
q->next=NULL;
p->next=q;
p=q;
p->data =(p2->data+flag)%10;
flag=(p2->data+flag)/10;
p2=p2->next;
}}
if(flag==1)
{LinkList q=new LNode;
q->next=NULL;
q->data=1;
p->next=q;}
}
void putout(LinkList L3)
{LinkList p;
p=L3->next;
while(p->next)
{printf("%d,",p->data);
p=p->next;}
printf("%d",p->data);
}
int main() {
int a[50],b[50];
char c[50],d[50];
cin>>c;int i=0,h,j=0;
memset(a,-1,sizeof(a));
memset(b,-1,sizeof(b));
for(h=0;;h++)
{
a[j]=c[i]-'0';
i++;j++;
if(c[i]!=',')
break;
else i++;
}
cin>>d;i=0;
j=0;
for(h=0;;h++)
{
b[j]=d[i]-'0';
i++;j++;
if(d[i]!=',')
break;
else i++;
}
LinkList L1,L2,L3;
create(L1,a);
create(L2,b);
xiangjia(L1,L2,L3);
putout(L3);
return 0;
}