#include<stdio.h>
#include<stdlib.h>
typedef struct ListNode
{
int data;
struct ListNode *Next;
}*ListNode;
struct ListNode* addTwoNumbers(struct ListNode* l1,struct ListNode* l2)
{
struct ListNode* l3;//头节点
struct ListNode* p3;//身体节点
struct ListNode* P;//指针结点
l3=(struct ListNode*)malloc(sizeof(struct ListNode));
l1=l1->Next;
l2=l2->Next;
P=l3;
int k=0; //标识符是否进位
while(l1!=NULL)
{
l1=l1->Next;
l2=l2->Next;
p3=(struct ListNode*)malloc(sizeof(struct ListNode));
if(((l1->data + l2->data) >=10) && k==1) //四种相加的可能性
{
p3->data=(l1->data)+(l2->data)-9;
k=1;
}
else if(((l1->data + l2->data) >=10) && k==0)
{
p3->data=(l1->data)+(l2->data)-10;
k=1;
}
else if(((l1->data + l2->data) < 10) && k==1)
{
p3->data=(l1->data)+(l2->data)+1;
k=0;
}
else if(((l1->data + l2->data) < 10) && k==0)
{
p3->data=(l1->data)+(l2->data);
k=0;
}
p3=P->Next;
}
return l3;
};
int main()
{
char a,c;
int b;
ListNode l1,l2,l3; //头节点
ListNode p1,p2;//身体节点
struct ListNode* P;//指针
l1=(struct ListNode*)malloc(sizeof(struct ListNode));
l2=(struct ListNode*)malloc(sizeof(struct ListNode));
P=l1;
while(c!=')')
{
scanf("%c %d %c ",&a,&b,&c);
p1=(struct ListNode*)malloc(sizeof(struct ListNode));
p1->data=b;
P->Next=p1;
printf("%d",p1->data);
}
scanf("%c",&c);
printf("%c",c);//同时重置c
P=l2;
while(c!=')')
{
scanf("%c %d %c ",&a,&b,&c);
p2=(struct ListNode*)malloc(sizeof(struct ListNode));
p2->data=b;
P->Next=p2;
printf("%d",p2->data);
}
l3=addTwoNumbers(l1,l2);
l3=l3->Next;
while(l3!=NULL)
{
printf("%d",l3->data);
l3=l3->Next;
}
}
将scanf后面改成
scanf("%c%d%c,"&a,&b,&c);
scanf里面不能有空格。
下面那个循环的最后,也加上一个
scanf("%c",&c);