c语言数据结构题,请问哪出错了?(可能是void addpolyn(polynomail &Pa,polynomail &Pb)这个函数错了

题目:设计线性表链式存储结构,编程下列功能:一元多项式的相加。

#include "stdlib.h"
#include "stdio.h"

typedef struct term
{
float coef; //定义结构体
int expn;
term *next;
}term, *polynomail;

int initlist(polynomail &l)
{
l=(polynomail)malloc(sizeof(term));//初始化
if(!l)
exit(0);
l->next=NULL;
return 1;
}

void creatpolyn(polynomail &p,int m)
{
initlist(p);
polynomail h,s; //建立多项式
initlist(s);
h=p;
h->coef=0;h->expn=-1;
printf("请依次输入");
printf("%d",m);
printf("个非零项");
for(int i=0;i<m;i++)
{
printf("\n第");printf("%d",i+1);printf("项的系数为:");
scanf("%d",&s->coef);
printf("\n第");printf("%d",i+1);printf("项的次数为:");
scanf("%d",&s->expn);
h->next=s;
h=h->next;
}
}

void addpolyn(polynomail &Pa,polynomail &Pb)
{
polynomail pa,pb,prea;
prea=Pa; //多项式相加
pa=Pa->next;pb=Pb->next;
while(pa&&pb)
{
if(pa->expn<pb->expn)
{

pa=pa->next;
prea=prea->next;
continue;

}
if(pa->expn==pb->expn)
{
pa->coef=pa->coef+pb->coef;
pa=pa->next;
prea=prea->next;
pb=pb->next;
continue;
}
if(pa->expn>pb->expn)
{
prea->next=pb;
pb->next=pa;
prea=prea->next;
continue;
}
}
if(!pa)
pa->next=pb;
}

void printpolyn(polynomail &Pa)
{
printf("两个多项式的和为:");
polynomail pa; //输出多项式的和
pa=Pa;
while(pa)
{
printf("%d,%d",pa->coef,pa->expn);
pa=pa->next;
printf(" ");
}
}

void main()

{
int m,n;
polynomail Pa,Pb;
printf("请输入第一个多项式的长度");
scanf("%d",&m);
creatpolyn(Pa,m);
printf("请输入第二个多项式的长度");
scanf("%d",&n);
creatpolyn(Pb,n);
printf("a");
addpolyn(Pa,Pb);
printf("b");
printpolyn(Pa);
printf("c");
}
输入的两个多项式都只有一项时就出错了,帮忙看看啊

对了,楼主,是void addpolyn(polynomail &Pa,polynomail &Pb)出错,当pa的幂小于pb时应该把pb插入pa前面(反之同理),pb下移,你刚好搞反,改了再试试
你的程序看起来很吃力,我没全部看完,addpolyn最后一句,既然pa为空哪来的pa->next?
温馨提示:内容为网友见解,仅供参考
无其他回答

...addpolyn(polynomail &Pa,polynomail &Pb)这个函数错了
对了,楼主,是void addpolyn(polynomail &Pa,polynomail &Pb)出错,当pa的幂小于pb时应该把pb插入pa前面(反之同理),pb下移,你刚好搞反,改了再试试 你的程序看起来很吃力,我没全部看完,addpolyn最后一句,既然pa为空哪来的pa->next?

原有的两个一元多项式保留,开辟的新内存空间来保存这结果一元多项式...
struct polynode类型的数据,以此建立链表*\/ }node;\/*若定为"node,*list;",意即node*与list同为结构指针类型*\/ node * create(void) \/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*\/ { node *h,*r,*s;int c,e;h=(node *)malloc(LEN); \/*建立多项式的头结点,为...

相似回答
大家正在搜