一元多项式相加(顺序存储)问题
#include<stdio.h>typedef struct polynode
{
int a[20][2];
int size;
}PNode;
void Creat_array(PNode *p)
{
int i;
printf("Enter coef,exp:\n");
for(i=0;i<p->size;i++){
scanf("%d,%d",&p->a[i][0],&p->a[i][1]);
}
}
void print(PNode *p)
{
int i;
for(i=0;i<(p->size)-1;i++)
printf("%dx^%d+",p->a[i][0],p->a[i][1]);
printf("%dx^%d\n",p->a[i][0],p->a[i][1]);
}
void polyAdd(PNode *HA,PNode *HB)
{
int m=0,n=0,k,sum;
while(n<(HB->size)&&m<(HA->size)){
if((HA->a[m][1])==(HB->a[n][1])){
HA->a[m][0]=(HA->a[m][0])+(HB->a[n][0]);
++n;
++m;
}
else{
if(HA->a[m][1]>HB->a[n][1]){
++(HA->size);
for(k=(HA->size)-1;k>m;k--){
HA->a[k][0]=HA->a[k-1][0];
HA->a[k][1]=HA->a[k-1][1];
}
HA->a[m][0]=HB->a[n][0];
HB->a[m][1]=HB->a[n][1];
++n;
++m;
}
else{
++m;
}
}
}
if(n<(HB->size)){
(HA->size)=(HA->size)+(HB->size)-n;
for(k=m;k<(HA->size);k++){
HA->a[k][0]=HB->a[n++][0];
HA->a[k][1]=HB->a[n++][1];
}
}
}
main()
{
PNode HA,HB;
printf("Please Enter the size of HA&HB:\n");
scanf("%d,%d",&HA.size,&HB.size);
printf("\n Creat HA\n");
Creat_array(&HA);
printf("A(x)=");
print(&HA);
printf("\n Creat HB\n");
Creat_array(&HB);
printf("B(x)=");
print(&HB);
polyAdd(&HA,&HB);
printf("\n A(x)+B(x)=");
print(&HA);
}
已经看了N久了 找不到错在哪 各位大侠帮帮忙 帮小弟解决一下这个问题。。。
谢谢了。