输入格式:
输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数。数字间以空格分隔。
输出格式:
输出1行,以指数递降方式输出和多项式非零项的系数和指数(保证不超过整数的表示范围)。数字间以空格分隔,但结尾不能有多余空格。零多项式应输出0 0。
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int data1;
int data2;
struct node *next;
}lnode;
lnode *create(lnode *head,int n){
head=(lnode *)malloc(sizeof(lnode));
head->next=NULL;
lnode *t,*p;
t=head;
for(int i=0;i<n;i++){
p=(lnode *)malloc(sizeof(lnode));
p->next=NULL;
scanf("%d %d",&p->data1,&p->data2);
t->next=p;
t=p;
}
return head;
}
lnode *add(lnode *head1,lnode *head2){
lnode *head3,*p1,*p2,*t;
p1=head1->next;
p2=head2->next;
t=head3=head1;
while(p1&&p2){
if(p1->data2>p2->data2){
t->next=p1;
t=p1;
p1=p1->next;
}
else if(p1->data2data2){
t->next=p2;
t=p2;
p2=p2->next;
}
else{
p2=p2->next;
t->next=p1;
t=p1;
p1->data1+=p2->data1;
p1=p1->next;
}
}
t->next=p1?p1:p2;
return head3;
}
void print(lnode *head){
lnode *p;
p=head->next;
while(p){
if(p->next!=NULL&&p->data1!=0)
printf("%d %d ",p->data1,p->data2);
else if(p->next==NULL&&p->data1!=0)
printf("%d %d",p->data1,p->data2);
p=p->next;
}
}
int main()
{
int n,m;
lnode *head1,*head2,*head3;
scanf("%d",&n);
head1=create(head1,n);
scanf("%d",&m);
head2=create(head2,m);
head3=add(head1,head2);
print(head3);
return 0;
}
哪位大神可以指点一下呀,谢谢了