我的程序功能是用两个单链表La,Lb存储一元多项式,并实现多项式的加法,将结果存在La中并显示,可是运行不起来,哪位好心人帮忙改一下啊,拜托了!
#include <iostream.h> struct polynomial{
float coef;
int expn;
polynomial *next;
} polynomial InitList(polynomial &L){//???
L->coef=0;
L->expn=0;
L->next=0;
return L;
} void insertlist(polynomial &L){
polynomial *p=L->next;
polynomial *s;
s=new polynomial;
cout < <"输入系数:" < <endl;
cin>>s->coef;
cout < <"输入指数:" < <endl;
cin>>s->expn;
s->next=p->next;
p->next=s;
} void AddPolyn(polynomial &pa, polynomial &pb){
polynomial *qa,*qb,*ss,*u;
float x;
qa=pa->next; qb=pb->next; ss=pa;
while (qa&&qb){
switch {
case qa->expn <qb->expn:
ss=qa; qa=qa->next; break;
case qa->expn=qb->expn:
x=qa->coef+qb->coef;
if(x!=0){
qa->coef=x; ss=qa; qa=qa->next; u=qb;
qb=qb->next; free(u);
}//if
else{
ss->next=qa->next; free(qa); qa=ss->next;
u=qb; qb=qb->next; free(u);
}//else
break;
case qa->expn>qb->expn:
u=qb->next; ss->next=qb; ss=qb; qb->next=qa; qb=u; break;
}
}
}
void Inputlist(polynomial &L){
char c;int i=1;
do
cout < <"输入第" < <i < <"项,以#结束:" < <endl;
insertlist(polynomial &L);
aa: cin>>c;
switch(c){
case '+': i++;break;
case '#': break;
default:cout < <"输入错误,重新输入!" < <endl;goto aa;
}
while(c!='#');
}
void showlist(polynomial &L){
polynomial *pp;
pp=L->next;
cout < <"所得的多项式是:\t";
while(pp->next){
cout < <pp->coef < <'\t' < <pp->expn < <"+" < <'\t' < <endl;
pp=pp->next;
}
}
void main (void){
polynomial *La,*Lb;
InitList(La);
InitList(Lb);
Inputlist(La);
Inputlist(Lb);
AddPolyn(La, Lb);
showlist(La);
}
#include <iostream.h> struct polynomial{
float coef;
int expn;
polynomial *next;
} polynomial InitList(polynomial &L){//???
L->coef=0;
L->expn=0;
L->next=0;
return L;
} void insertlist(polynomial &L){
polynomial *p=L->next;
polynomial *s;
s=new polynomial;
cout < <"输入系数:" < <endl;
cin>>s->coef;
cout < <"输入指数:" < <endl;
cin>>s->expn;
s->next=p->next;
p->next=s;
} void AddPolyn(polynomial &pa, polynomial &pb){
polynomial *qa,*qb,*ss,*u;
float x;
qa=pa->next; qb=pb->next; ss=pa;
while (qa&&qb){
switch {
case qa->expn <qb->expn:
ss=qa; qa=qa->next; break;
case qa->expn=qb->expn:
x=qa->coef+qb->coef;
if(x!=0){
qa->coef=x; ss=qa; qa=qa->next; u=qb;
qb=qb->next; free(u);
}//if
else{
ss->next=qa->next; free(qa); qa=ss->next;
u=qb; qb=qb->next; free(u);
}//else
break;
case qa->expn>qb->expn:
u=qb->next; ss->next=qb; ss=qb; qb->next=qa; qb=u; break;
}
}
}
void Inputlist(polynomial &L){
char c;int i=1;
do
cout < <"输入第" < <i < <"项,以#结束:" < <endl;
insertlist(polynomial &L);
aa: cin>>c;
switch(c){
case '+': i++;break;
case '#': break;
default:cout < <"输入错误,重新输入!" < <endl;goto aa;
}
while(c!='#');
}
void showlist(polynomial &L){
polynomial *pp;
pp=L->next;
cout < <"所得的多项式是:\t";
while(pp->next){
cout < <pp->coef < <'\t' < <pp->expn < <"+" < <'\t' < <endl;
pp=pp->next;
}
}
void main (void){
polynomial *La,*Lb;
InitList(La);
InitList(Lb);
Inputlist(La);
Inputlist(Lb);
AddPolyn(La, Lb);
showlist(La);
}
空指针。