#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;
}
}
大一下册数据结构链表问题,很简单,就是单纯的显示问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Chenglin_Yu 2020-07-19 15:25关注
将scanf后面改成
scanf("%c%d%c,"&a,&b,&c);
scanf里面不能有空格。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报