多项式计算要求:1主要功能:(1)输入并建立多项式;(2)输出多项式;(3)两个多项式相加,建立并输出和多项式;(4)两
1个回答

#include

#include

typedef struct

{

float coef;//系数

int expn;//指数

}

ElemType;

typedef struct LNode

{

ElemType data;

struct LNode *next;

}

LNode,*LinkList;

LinkList InitList()//创建链表

{

LinkList L;

L=(LinkList)malloc(sizeof(LNode));

L->next=NULL;

return(L);

}

void Creat(LinkList L,ElemType x)//创建多项式

{

LinkList s,p;

s=(LinkList)malloc(sizeof(LNode));

s->data=x;

p=L;

while(p->next)

p=p->next;

s->next=NULL;

p->next=s;

}

void Insert(LinkList L,LNode p)//插入链表

{

LinkList q,pc;

pc=(LinkList)malloc(sizeof(LNode));

*pc=p;

q=L;

while(q->next)

q=q->next;

pc->next=q->next;

q->next=pc;

}

void AddPolyn(LinkList pa,LinkList pb,LinkList pc)//多项式求和

{

LinkList qa,qb;

LNode qc;

float sum;

int a,b;

qa=pa->next;

qb=pb->next;

while(qa&&qb)

{

a=qa->data.expn;

b=qb->data.expn;;

if(anext;

}

if(a==b)

{

sum=qa->data.coef+qb->data.coef;

if(sum!=0)

{

qc=*qa;

qc.data.coef=sum;

Insert(pc,qc);

qa=qa->next;

qb=qb->next;

}

else

{

qa=qa->next;

qb=qb->next;

}

}

if(a>b)

{

Insert(pc,*qb);

qb=qb->next;

}

while(qa)

{

Insert(pc,*qa);

qa=qa->next;

}

while(qb)

{

Insert(pc,*qb);

qb=qb->next;

}

}

}

void Plus(LinkList pa,LinkList pb,LinkList pc)//多项式的差

{

LinkList qb;

qb=pb->next;

while(qb)

{

qb->data.coef=-(qb->data.coef);

qb=qb->next;

}

AddPolyn(pa,pb,pc);

}

void Print(LinkList L)//输出多项式

{

LinkList p;

p=L->next;

while(p->next)

{

printf("%fx^%d+",p->data.coef,p->data.expn);

p=p->next;

}

printf("%fx^%d",p->data.coef,p->data.expn);

}

void main()//主函数

{

LinkList La,Lb,Lc,Ld;ElemType c;

int a,i;

La=InitList();

Lb=InitList();

Lc=InitList();

Ld=InitList();

printf("输入La的项数:");

scanf("%d",&a);

for(i=0;i