写一元多项式相加的代码时，代码出现问题

``````#include<iostream.h>
#include<stdlib.h>
#define MAX 20
//存放多项式的数组类型
typedef struct{
float coef;
int expon;
}polyarray [MAX];
//定义单链表结点类型
typedef struct poly_node{
float coef;     //系数
int expon;      //指针域
struct poly_node *next;
}poly_node,*poly_pointer;  //指向结构的指针
//创建，初始化，显示，
//尾插法创建链表
void  creatpoly(poly_pointer &L,polyarray a[],int n){
poly_pointer r,s;
L=(poly_pointer)malloc(sizeof(poly_node));
L->next=NULL;
r=L;  //p时钟指向尾结点，开始时指向头结点
for(int i=0;i<n;i++){
s=(poly_pointer)malloc(sizeof(poly_node));//创建新结点
s->coef=a[i].coef;
s->expon=a[i].expon;
r->next=s;//将结点s插入到结点r之后
r=s;
}
r->next    =NULL;   //尾结点next域为空
}

void display(poly_pointer L){
poly_pointer p=L->next;
while(p!=NULL){
cout<<p->coef<<"*"<<p->expon;
p=p->next;
}
cout<<endl;

}
//按exp域递减排序
if(p!=NULL){  //若原链表中有一个以上的数据结点
r=p->next;
p->next=NULL;
p=r;
while(p!=NULL){
r=p->next;
while(q->next!=NULL&&q->next->expon>p->expon)
q=q->next;
p->next=q->next;
q->next=p;
p=r;
}
}
}

//求一元多项式pa 和pb 的和，保存在pa里
poly_pointer qa=pa->next,qb=pb->next;

poly_pointer p=pa;
while(qa && qb){
if(qa->expon<qb->expon){
//qa连入结果
pa=(poly_pointer)malloc(sizeof(poly_node));
pa->next=pa->next;
pa->expon=pa->expon;
p->next=pa;
p=pa;
pa=pa->next;

}else if(qa->expon==qb->expon){
pa->expon+=qb->expon;
if(qa->coef){//qa连入结果
pa=(poly_pointer)malloc(sizeof(poly_node));
pa->expon=pa->expon;
pa->coef=pa->coef;
p->next=pa;
p=pa;

}
qa=qa->next; qb=qb->next;
}

else{  //qa->expon>qb->expon
//qb连入结果
pa=(poly_pointer)malloc(sizeof(poly_node));
pa->expon=pb->expon;
pa->coef=pb->coef;
p->next=pa;
p=pa;
pb=pb->next;
}
}//while

//谁未结束，谁连进
if(pb!=NULL) pa=pb;
while(pa!=NULL){
pa=(poly_pointer)malloc(sizeof(poly_node));
pa->expon=pa->expon;
pa->coef=pa->coef;
p->next=pa;
p=pa;
pa=pa->next;
}
p->next=NULL;

}

void mian(){
poly_pointer LA,LB;
polyarray a[]={{3,1},{2,2},{1,3},{4,4}};
polyarray b[]={{3,1},{2,2},{1,3},{4,4},{3,5}};
creatpoly(LA,a,4);
creatpoly(LB,b,5);
cout<<"原A：";
display(LA);
cout<<endl;
cout<<"原B：";
display(LB);
cout<<endl;
sort(LA);
sort(LB);
cout<<"有序:";
display(LA);
cout<<"有序:";
display(LB);
cout<<"结果：";
display(LA);
cout<<endl;
}

``````

• 写回答

2条回答默认 最新

• 快乐鹦鹉 2022-09-20 21:38
关注

报错是在poly.h的35和36行
你这个数据结构定义方式不对
struct _polyarray
{
float coef;
float expon;
}polyarray[MAX];
当使用typedef时，你的polyarray就是数据类型名称，而不是变量名称，不能后面加[MAX}形成数组的

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论 编辑记录

• 系统已结题 9月29日
• 已采纳回答 9月21日
• 创建了问题 9月20日

悬赏问题

• ¥15 基于ucc28019的pfc电路中芯片一直不工作
• ¥15 yolov8在3588板子端c++推理报错
• ¥50 unitywebrequest分段下载导致报错，如何解决？
• ¥15 错误使用 gretna_GUI_PreprocessInterface>RunBtn_Callback
• ¥15 WPF如何用Chart绘画出Y轴的左边数据
• ¥15 pycharm无法查看内置代码
• ¥15 跑hls xfopencv的例程standalone_hls_axi_example出的错误，csim没问题，c synthesis出的错误
• ¥15 sqlserver update语句逐行生效
• ¥20 Windows10系统命令行调用
• ¥15 php环境如何实现国密SM2相关功能