scanf \n \r l灵活使用

解析这段代码 #include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data1; int data2; struct LNode *next; }LNode,*Linklist; int Compare(int a,int b); //比较一元多项式的系数函数 void Attach(int a1,int a2,Linklist *Prear); //链表连接函数 void Print (Linklist L); Linklist Creat() //建表 { Linklist L,r; L=(Linklist)malloc(sizeof(Linklist)); L->next=NULL; r=L; int i,j; printf("请输入系数和指数,以空格隔开,以00结束!\n"); scanf("%d %d",&i,&j); while(i!=0&&j!=0) { Linklist p; p=(Linklist)malloc(sizeof(Linklist)); p->data1=i; p->data2=j; r->next=p; r=p; scanf("%d %d",&i,&j); } r->next=NULL; return L; } Linklist Add(Linklist P,Linklist Q) { LNode *rear,*L; rear=(Linklist)malloc(sizeof(Linklist)); L=rear; int sum; P=P->next; Q=Q->next; while(P&&Q) { switch(Compare(P->data2,Q->data2)) { case 1: Attach(Q->data1,Q->data2,&rear); Q=Q->next; break; case -1: Attach(P->data1,P->data2,&rear); P=P->next; break; case 0: sum = P->data1 + Q->data1; if(sum) Attach(sum,P->data2,&rear); P=P->next; Q=Q->next; break; } } for(P;P!=NULL;P=P->next) //没有比较完的P或Q Attach(P->data1,P->data2,&rear); for(Q;Q!=NULL;Q=Q->next) Attach(Q->data1,Q->data2,&rear); rear->next=NULL; return L; } void Print(Linklist L) { if(!L) printf("xxxx"); Linklist p; p=L->next; printf("相加结果为:\n"); while(p!=NULL) { printf("+%d*x^%d",p->data1,p->data2); p=p->next; } } void Attach(int a1,int a2,Linklist *c) { Linklist p; p=(Linklist)malloc(sizeof(Linklist)); p->data1=a1; p->data2=a2; p->next=NULL; (*c)->next=p; *c=p; } int Compare(int a,int b) { if(a>b) return 1; else if(a<b) return -1; else return 0; } int main() { Linklist P,Q,R; P=Creat(); Q=Creat(); R=Add(P,Q); Print(R); return 0; }
最新发布
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值