单链表实现一元多项式相加
单链表实现一元多项式相加
请帮我看一下这个程序有什么错误,
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct LNode
{ /*多项式的存储结构定义*/
int coef;
int expn;
struct LNode *next;
}LNode,*polynomail;
void creatpolyn(polynomail &p,int m)
{
int i;
int coef;
int expn;
polynomail s;
p=(polynomail)malloc(sizeof(LNode));
p->next = NULL;
for(i=1;icoef,s->expn);
printf("\n");
s->coef=coef;
s->expn=expn;
s->next=p->next;
p->next=s;
}
}//CreatPolyn
void addpolyn(polynomail &pa,polynomail &pb)
{
polynomail qa,qb,c,pc;
pc=(polynomail)malloc(sizeof(LNode));
pc->next=NULL;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
if(qa->expn=qb->expn)
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=pa->expn;
c->coef=qa->coef+qb->coef;
c->next=NULL;
qa=qa->next;
qb=qb->next;
}
if(qa->expn>qb->expn)
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=qa->expn;
c->coef=qa->coef;
c->next=NULL;
qa=qa->next;
}
if(qa->expnexpn)
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=qb->expn;
c->coef=qb->coef;
c->next=NULL;
qb=qb->next;
}
pc->next=c;
pc=c;
}//while
if(qa)
c->next=qa;
else
c->next=qb;
}//AddPolyn
void printpolyn(polynomail p)
{
while(p->next!=NULL)
{
p=p->next;
printf(" %g*x^%d",p->coef,p->expn);
}
}
int main()
{
int n,m;
polynomail pa,pb;
printf("请输入一元多项式pa的项数:");
scanf("%d\n",n);
printf("\n");
creatpolyn(&pa,n);
printf("请输入一元多项式pb的项数:");
scanf("%d\n",m);
printf("\n");
creatpolyn(&pb,m);
addpolyn(&pa,&pb);
printf("结果是:pa+pb=");
printpolyn(pa);
printf("\n");
return 0;
}
请帮我看一下这个程序有什么错误,
#include
#include
#include
#include
#include
#include
#include
#include
#include
typedef struct LNode
{ /*多项式的存储结构定义*/
int coef;
int expn;
struct LNode *next;
}LNode,*polynomail;
void creatpolyn(polynomail &p,int m)
{
int i;
int coef;
int expn;
polynomail s;
p=(polynomail)malloc(sizeof(LNode));
p->next = NULL;
for(i=1;icoef,s->expn);
printf("\n");
s->coef=coef;
s->expn=expn;
s->next=p->next;
p->next=s;
}
}//CreatPolyn
void addpolyn(polynomail &pa,polynomail &pb)
{
polynomail qa,qb,c,pc;
pc=(polynomail)malloc(sizeof(LNode));
pc->next=NULL;
qa=pa->next;
qb=pb->next;
while(qa&&qb)
{
if(qa->expn=qb->expn)
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=pa->expn;
c->coef=qa->coef+qb->coef;
c->next=NULL;
qa=qa->next;
qb=qb->next;
}
if(qa->expn>qb->expn)
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=qa->expn;
c->coef=qa->coef;
c->next=NULL;
qa=qa->next;
}
if(qa->expnexpn)
{
c=(polynomail)malloc(sizeof(LNode));
c->expn=qb->expn;
c->coef=qb->coef;
c->next=NULL;
qb=qb->next;
}
pc->next=c;
pc=c;
}//while
if(qa)
c->next=qa;
else
c->next=qb;
}//AddPolyn
void printpolyn(polynomail p)
{
while(p->next!=NULL)
{
p=p->next;
printf(" %g*x^%d",p->coef,p->expn);
}
}
int main()
{
int n,m;
polynomail pa,pb;
printf("请输入一元多项式pa的项数:");
scanf("%d\n",n);
printf("\n");
creatpolyn(&pa,n);
printf("请输入一元多项式pb的项数:");
scanf("%d\n",m);
printf("\n");
creatpolyn(&pb,m);
addpolyn(&pa,&pb);
printf("结果是:pa+pb=");
printpolyn(pa);
printf("\n");
return 0;
}
其他人气:470 ℃时间:2020-04-02 08:21:19
优质解答
我希望你能给我加分啥,我帮你调试了大概2个小时了.这程序是不是你写的?如果是的话,希望你好好加强C的基本功,很多思想上和语法上的问题.其实我也不是帮你改,基本上我帮你重写了.#include #include #include #include ...
我来回答
类似推荐
猜你喜欢
- 1钠离子交换器的再生有几个步骤.
- 2把一个圆柱体切拼成一个近似的长方体,表面积增加36平方厘米,已知长方体的宽为3cm,求原来圆柱的 体积?
- 3修一条路,甲队独修15天完成,乙队独修12天完成.两队合修若干天后,乙队调走,剩下由甲队6天修完.乙队修了几天?
- 416《鲁宾逊漂流记》主要内容
- 5()个最小的两位数相加的最小的五位数.
- 6初中课本里的一词多义多词性的英语单词有哪些?
- 7六二班男生有30人,女生有20人,女生人数比男生人数少()%
- 8解三元一次方程组x:y=3:2,y:z=5:4,x+y+z=6
- 9反应C+H2O=CO+H2.若V(C)正=V(H2O)逆,可以判断达到化学平衡状态吗?
- 10物块静止在固定的斜面上,分别按图示的方向对物块施加大小相等的力F,A中F垂直于斜面向上.B中F垂直于斜面向下,C中F竖直向上,D中F竖直向下,施力后物块仍然静止,则物块所受的静摩擦