2005-12-08
用C语言编程,要求解决下面的问题。
1 问题描述
对任意输入的两个一元多项式完成计算:和,差,乘积,商等运算。
2要求与提示
(1)多项式可用链表表示
(2)求和与差算法完全一致,多项式相加减运算规则为:若两项指数相等 ,则系数相加减,若两指数不等,则两项按指数大小次序复抄。
(3)求乘积时的规则为:把一个多项式中的每一项分别乘以另一个多项式的每一项,完成后再合并同类项(相乘时,系数相乘,指数相加)
(4)多项式相除规则为:以被除数和除数的指数为依据相除。
PS:这是写论文哈,要详细哦!!!还要 有注解呢!!谢谢了,拜托,早点完成哦!!!
#include
#include
#include
#include
typedef int datatype;
typedef struct LNode
{
float coef; /*多项式系数*/
int expn; /*多项式指数*/
struct LNode *next;
}LNode,*linklist;
/*---------创建带头结点的多项式链表--------*/
linklist creat()
{ linklist head,s,p,pre;
float coef;
int expn;
head=(linklist)malloc(sizeof(LNo...全部
#include
#include
#include
#include
typedef int datatype;
typedef struct LNode
{
float coef; /*多项式系数*/
int expn; /*多项式指数*/
struct LNode *next;
}LNode,*linklist;
/*---------创建带头结点的多项式链表--------*/
linklist creat()
{ linklist head,s,p,pre;
float coef;
int expn;
head=(linklist)malloc(sizeof(LNode)); /*表头结点*/
head->next=NULL;
printf("输入系数:");
scanf("%f",&coef);
printf("输入指数:");
scanf("%d",&expn);
while (coef!=0。
0)
{ printf("当系数等于零的时候结束!");
s=(linklist)malloc(sizeof(LNode)); /*生成新结点*/
s->coef=coef;
s->expn=expn;
s->next=NULL;
pre=head; /*插入到有序的多项式链表中去*/
p=head->next;
while (p && p->expn expn)
{ pre=p;
p=p->next;
}
s->next=p;
pre->next=s;
printf("读下一项:\n");
printf("输入系数:\n");
scanf("%f",&coef);
printf("\n");
printf("输入指数:");
scanf("%d",&expn);
}
return head;
}
/*-----------输出多项式链表-------------*/
void print(linklist head)
{ linklist p;
p=head->next;
while (p)
{
printf("%fX^%d+",p->coef,p->expn);
p=p->next;
}
}
/*-------------多项式相加----------------*/
linklist add(linklist pa,linklist pb)
{
linklist p,q,pre,r,head;
float x;
head=pa;
p=pa->next; //p,q 指向头接点的下一个接点,即多项式的第一个接点
q=pb->next;
pre=pa; //pre指向p的前驱
while((p!=NULL)&&(q!=NULL)) //处理多项式的相加的问题
if(p->expnexpn)
{
pre=p;
p=p->next;
}
else if (p->expn==q->expn)
{
x=p->coef+q->coef;
if(x!=0) //系数相加不为0的情况
{
p->coef=x;
pre=p;
p=p->next;
}
else //系数相加为0的情况
{
pre->next=p->next;
free(p);
p=pre->next;
}
r=q;
q=q->next;
free(r);
}
else
{
r=q->next;
q->next=p;
pre->next=q;
pre=q;
q=r;
}
if(q!=NULL)
pre->next=q;
free(pb);
return head;
}
/*----主程序------*/
void main()
{
linklist a,b,c;
printf("请输入第一个多项式:");
a=creat(); /*创建多项式链表a*/
printf("请输入第二个多项式:");
b=creat(); /*创建多项式链表b*/
cout