【求助】数据结构,利用顺序存储实现多项式的求和运算
无法输出求和后的数据代码如下:
#include<stdio.h>
#include<stdlib.h>
struct node{
float xishu;
int zhishu;
};
void CreatPolyn(node a[],int j)
{
node temp[j];
for(int i=0;i<j;i++)
{
printf("请输入第%d项的系数和指数",i+1);
scanf("%f%d",&a[i].xishu,&a[i].zhishu);
}
a[j].xishu=0;
for(int k=0;k<j-1;k++)
{
for(int i=0;i<j-1;i++)
{
if(a[i].zhishu>a[i+1].zhishu)
{
temp[i]=a[i];
a[i]=a[i+1];
a[i+1]=temp[i];
}
}
}
}
void PrintPolyn(node a[])
{
int i=0;
while(a[i].xishu!=0)
{
if(a[i].zhishu==0)
printf("%f",a[i].xishu);
else
{
printf("%fx^%d",a[i].xishu,a[i].zhishu);
}
if(a[i+1].xishu>0)
printf("+");
i++;
}
puts(" ");
}
void AddPolyn(node a[],node b[],int c,int d)
{
int i=0,j=0,k=0;
node add[c+d]={0};
while(k<c+d)
{
if(a[i].zhishu>b[j].zhishu)
{
add[k]=b[j];
k++;
j++;
}
else if(a[i].zhishu=b[j].zhishu)
{
add[k].xishu=a[i].xishu+b[j].xishu;
i++;
j++;
k++;
}
else {
add[k]=a[i];
i++;
k++;
}
}
a[k]=add[k];
}
int main()
{
int a,b,c;
printf("请输入第一个多项式非零项的项数:\n");
scanf("%d",&a);
node x[a];
CreatPolyn(x,a);
printf("P1(x)=");
PrintPolyn(x);
printf("请输入第二个多项式非零项的项数:\n");
scanf("%d",&b);
node y[b];
CreatPolyn(y,b);
printf("P2(x)=");
PrintPolyn(y);
AddPolyn(x,y,a,b);
PrintPolyn(x);
}