作者在 2010-12-12 10:14:46 发布以下内容
求教高手帮忙修改!谢谢!!
问题描述:能够按照指数降序排列建立并输出多项式;
能够完成两个多项式的相加、相减,并将结果输入;
在上交资料中请写明:存储结构、多项式相加的基本过程的算法(可以使用程序流程图)、源程序、测试数据和结果、算法的时间复杂度、另外可以提出算法的改进方法。#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{ /*多项式的存储结构定义*/
int coef;
int expn;
struct LNode *next;
}LNode,*linklist;
linklist creat()
{ /*一元多项式以链表存储形式的建立*/
linklist head,s,p,pre;
int coef;
int expn;
head=(linklist)malloc(sizeof(LNode));
head->next=NULL;
printf("put in coef and expn:");
scanf("%d %d",&coef,&expn);
while (coef!=0)
{
s=(linklist)malloc(sizeof(LNode));
s->coef=coef;
s->expn=expn;
s->next=NULL;
pre=head;
p=head->next;
while (p&&p->expn>s->expn)
{
pre=p;
p=p->next;
}
s->next=p;
pre->next=s;
printf("put in coef and expn:");
scanf("%d %d",&coef,&expn);
printf("\n");
}
return head;
}
linklist add(linklist La,linklist Lb)
{ /*两个一元多项式的加法运算*/
linklist Lc,pa,pb,pt,pc;
int temp;
Lc=(linklist)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
pc=Lc;
while (pa&&pb)
{
if (pa->expn==pb->expn)
{
pt=(linklist)malloc(sizeof(LNode));
pt->expn=pa->expn;
pt->coef=pa->coef+pb->coef;
pt->next=NULL;
pa=pa->next;
pb=pb->next;
}
else if (pa->expn>pb->expn)
{
pt=(linklist)malloc(sizeof(LNode));
pt->expn=pa->expn;
pt->coef=pa->coef;
pt->next=NULL;
pa=pa->next;
}
else
{
pt=(linklist)malloc(sizeof(LNode));
pt->expn=pb->expn;
pt->coef=pb->coef;
pt->next=NULL;
pb=pb->next;
}
pc->next=pt;
pc=pt;
}
if (pa)
pc->next=pa;
else
pc->next=pb;
return Lc;
}
int main ()
{
}
#include <stdlib.h>
typedef struct LNode
{ /*多项式的存储结构定义*/
int coef;
int expn;
struct LNode *next;
}LNode,*linklist;
linklist creat()
{ /*一元多项式以链表存储形式的建立*/
linklist head,s,p,pre;
int coef;
int expn;
head=(linklist)malloc(sizeof(LNode));
head->next=NULL;
printf("put in coef and expn:");
scanf("%d %d",&coef,&expn);
while (coef!=0)
{
s=(linklist)malloc(sizeof(LNode));
s->coef=coef;
s->expn=expn;
s->next=NULL;
pre=head;
p=head->next;
while (p&&p->expn>s->expn)
{
pre=p;
p=p->next;
}
s->next=p;
pre->next=s;
printf("put in coef and expn:");
scanf("%d %d",&coef,&expn);
printf("\n");
}
return head;
}
linklist add(linklist La,linklist Lb)
{ /*两个一元多项式的加法运算*/
linklist Lc,pa,pb,pt,pc;
int temp;
Lc=(linklist)malloc(sizeof(LNode));
Lc->next=NULL;
pa=La->next;
pb=Lb->next;
pc=Lc;
while (pa&&pb)
{
if (pa->expn==pb->expn)
{
pt=(linklist)malloc(sizeof(LNode));
pt->expn=pa->expn;
pt->coef=pa->coef+pb->coef;
pt->next=NULL;
pa=pa->next;
pb=pb->next;
}
else if (pa->expn>pb->expn)
{
pt=(linklist)malloc(sizeof(LNode));
pt->expn=pa->expn;
pt->coef=pa->coef;
pt->next=NULL;
pa=pa->next;
}
else
{
pt=(linklist)malloc(sizeof(LNode));
pt->expn=pb->expn;
pt->coef=pb->coef;
pt->next=NULL;
pb=pb->next;
}
pc->next=pt;
pc=pt;
}
if (pa)
pc->next=pa;
else
pc->next=pb;
return Lc;
}
int main ()
{
}