多项式加法(C语言实现)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

多项式加法

#include

#include

#define Max_Size 100

typedef struct node

{

float coef;

int expn;

struct node *next;

}PolyNode;

int CreCoeStr(float C[])

{

char flag;

int i=0;

do

{

scanf("%f",&C[i++]);

scanf("%c",&flag);

} while (flag!='#');

return(i);

}

void CreExpStr(int E[])

{

int i=0;

char flag;

do

{

scanf("%d",&E[i++]);

scanf("%c",&flag);

} while (flag!='#');

}

void InitPolyList(PolyNode **sq)

{

if((*sq=(PolyNode *)malloc(sizeof(PolyNode)))==NULL) exit(1);

(*sq)->next=NULL;

}

void CreatPolyList(PolyNode **sq,float C[],int E[],int num)

{

int i;

PolyNode *s,*r=*sq;

for(i=0;i

{

if((s=(PolyNode *)malloc(sizeof(PolyNode)))==NULL) exit(1);

s->coef=C[i];

s->expn=E[i];

r->next=s;

r=s;

}

r->next=NULL;

}

void InsertSortPoly(PolyNode **sq)

{

PolyNode *p,*q,*r,*u;

p=(*sq)->next;

(*sq)->next=NULL;

while (p)

{

r=*sq;

q=(*sq)->next;

while (q&&q->expn<=p->expn)

{

r=q;

q=q->next;

}

u=p->next;

p->next=r->next;

r->next=p;

p=u;

}

}

void DispList(PolyNode *sq)

{

PolyNode *p=sq->next;

while(p)

{

printf("(%7.2f,%d)",p->coef,p->expn);

p=p->next;

}

printf("\n");

}

PolyNode *AddPoly(PolyNode *sq_a,PolyNode *sq_b)

{

PolyNode *p_1=sq_a->next,*p_2=sq_b->next,*tc,*p,*s,*pc;

InitPolyList(&pc);

tc=pc;

while (p_1&&p_2)

{

if(p_1->expnexpn)

{

if((s=(PolyNode *)malloc(sizeof(PolyNode)))==NULL) exit(1);

s->coef=p_1->coef;

s->expn=p_1->expn;

s->next=NULL;

tc->next=s;

tc=s;

p_1=p_1->next;

}

else if(p_1->expn>p_2->expn)

{

if((s=(PolyNode *)malloc(sizeof(PolyNode)))==NULL) exit(1);

s->coef=p_2->coef;

s->expn=p_2->expn;

s->next=NULL;

tc->next=s;

tc=s;

p_2=p_2->next;

}

else

{

if(p_1->coef+p_2->coef)

{

if((s=(PolyNode *)malloc(sizeof(PolyNode)))==NULL) exit(1);

s->coef=p_1->coef+p_2->coef;

s->expn=p_1->expn;

s->next=NULL;

tc->next=s;

tc=s;

}

p_1=p_1->next;

p_2=p_2->next;

}

}

if(p_1) p=p_1;

else p=p_2;

while (p)

{

if((s=(PolyNode *)malloc(sizeof(PolyNode)))==NULL) exit(1);

s->coef=p->coef;

s->expn=p->expn;

tc->next=s;

tc=s;

p=p->next;

}

tc->next=NULL;

return pc;

}

void main()

{

PolyNode *sq_1,*sq_2,*sq_3;

float C_1[Max_Size],C_2[Max_Size];

int E_1[Max_Size],E_2[Max_Size],num_1,num_2;

printf("\n\t\t两个多项式相加运算\n");

printf("\n");

printf("\n");

printf("请输入多项式A 的各项系数(以‘#’结束): ");

num_1=CreCoeStr(C_1);

printf("\n请输入多项式A 的各项幂数(以‘#’结束): ");

CreExpStr(E_1);

printf("\n请输入多项式B 的各项系数(以‘#’结束): ");

num_2=CreCoeStr(C_2);

printf("\n请输入多项式B 的各项幂数(以‘#’结束): ");

CreExpStr(E_2);

InitPolyList(&sq_1);

InitPolyList(&sq_2);

CreatPolyList(&sq_1,C_1,E_1,num_1);

CreatPolyList(&sq_2,C_2,E_2,num_2);

printf("\n原多项式A :\n");

DispList(sq_1);

printf("\n原多项式B :\n");

DispList(sq_2);

InsertSortPoly(&sq_1);

InsertSortPoly(&sq_2);

printf("\n排列后的多项式A : \n");

DispList(sq_1);

相关文档
最新文档