多项式加减法

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

一实验目的

设计一个一元稀疏多项式简单计算器。

二、实验要求

能创建和实现多项式的加减等各种功能。

三、实验内容

一元稀疏多项式的基本功能:

1、输入并建立多项式;

2、输出多项式,输出的形式为整数序列:n,c1,e1,c2,e2,……,cn,en,其中n

是多项式的项数,ci和ei分别是第i项的系数和指数,序列按指数降序排列。

3、多项式a和b相加,建立多项式a+b;

4、多项式a和b相加,建立多项式a-b;

四、程序源代码

#include

#include

#define NULL 0

typedef struct LNode{

float coef;

int expn;

struct LNode *next;

}LNode, *Linklist;

/////////////////////////////////////////////////

LNode *creat(int count)///////////////////////////创建链表,存放多项式{

Linklist p1,p2,head;

int n=0;

p1=p2=(Linklist)malloc(sizeof(LNode));

scanf("%f %d",&p1->coef,&p1->expn);

head=NULL;

while(n

{

n=n+1;

if(n==1) head=p1;

else p2->next=p1;

p2=p1;

p1=(Linklist)malloc(sizeof(LNode));

if(n!=count)

{

scanf("%f %d",&p1->coef,&p1->expn);

}

}

p2->next=NULL;

return(head);

}

Linklist sort(Linklist head)////////////////////////对多项式按指数降序排序

{

Linklist p0,p1,p2;

int i=0;

int s;

float f;

p0=p1=head;

while(p0)

{

i++;

p0=p0->next;

}

for(int j=0;j

{

p1=head;

while(p1->next)

{

p2=p1;

p1=p1->next;

if(p1->expn>p2->expn)

{

f=p1->coef;

s=p1->expn;

p1->coef=p2->coef;

p1->expn=p2->expn;

p2->coef=f;

p2->expn=s;

}

}

}

return head;

}

/////////////////////////////////////////////////////合并系数相同的项Linklist merge(Linklist head)

{

Linklist p1,p2;

p1=p2=head;

while(p1)

{

p2=p1;

p1=p1->next;

while(p1&&p1->expn==p2->expn)

{

p2->coef+=p1->coef;

p2->next =p1->next ;

free(p1);

p1=p2->next ;

}

}

return head;

}

/////////////////////////////////////////////////////输入多项式各项系

数及指数

void print(Linklist head)

{

Linklist p,q;

int count=0;

q=head;

while(q)

{

q=q->next;

count++;

}

printf("多项式中的各项系数指数依次为:\n");

printf("%d",count);

p=head;

if(head==NULL)

printf("所得结果为0!\n");

if(head!=NULL)

do

{printf("\t%4.2fX%d",p->coef,p->expn);

p=p->next;

}while(p!=NULL);

printf("\n");

}

///////////////////////////////////////////////////////出去系数为零的项

Linklist del_Zero(Linklist head)

{

Linklist p1,p2;

if(head==NULL)

{

printf("\nlist null! \n");return head;

}

p1=p2=head;

相关文档
最新文档