一元多项式的加法、乘法运算的实现

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

数据结构课题设计报告设计题目:一元多项式的加、乘法的实现

姓名:

班级:

学号:

指导老师:

目录

一、实验题目 (3)

二、设计内容 (3)

三、设计实现 (3)

四、概要设计 (4)

1,按要求输入一元多项式的系数 (4)

2,计算一元多项式的加法 (4)

3,输出计算结果 (4)

4,按要求输入一元多项式的系数 (4)

5,计算一元多项式的乘法 (4)

6,输出计算结果 (4)

7,退出 (4)

五、程序流程图 (5)

1,加法运算 (5)

2,乘法运算 (6)

六、源程序 (7)

七、程序运行界面图 (13)

1,加法运行输入项数 (13)

2,输入每一项的系数及指数 (13)

3,算出加法运算结果及乘法运行输入项数 (14)

4,入乘法运算每一项的系数及指数 (14)

5,算出乘法运算的结果 (15)

八、心得体会 ........................................................................................................ - 16 -课程设计评分表 (17)

一、实验题目

一元多项式加法、乘法运算的实现

二、设计内容

该程序的功能是实现一个一元多项式运算。能够完成两个多项式的相加、相乘的运算并且输出正确的答案。

三、设计实现

一元多项式加法,乘法运算的实现

1.根据输入创建一元多项式,采用顺序和链表存储结构实现

顺序存储结构:在计算机内部可以采用不同方式存储一个线性表,其中最简单的方式就是用一组地址连续的存储单元来依次存储线性表中的数据元素。

对一元多项式存储结构的选择,输入多项式采用头插法的方式,输入多项式中一个项的系数和指数,就产生一个新的节点,建立起它的右指针,并用头节点指向它;一元多项式可以用顺序和链表两种存储结构表示,顺序结构的最大长度很难确定。单链表的结构体可以用来存储多项式的系数,指数,便于实现任意多项式的运算。

2.创建的的第个一元多项式用于实现加法的运算,第二个一元多项式用于实现乘法的运算。

3.运算完毕后,退出运行程序

四、概要设计

1,按要求输入一元多项式的系数2,计算一元多项式的加法

3,输出计算结果

4,按要求输入一元多项式的系数5,计算一元多项式的乘法

6,输出计算结果

7,退出

五、程序流程图1,加法运算

2,乘法运算

六、源程序

#include

#include

#include

#define NULL 0

typedef struct Node{ //定义结构体类型float coef; //系数

int expn; //指数

struct Node *next; //结构体指针}Node,*Linklist;

struct polynode

{

int c;

int e;

struct polynode *next;

};

struct polynode * creat(void)

{

int c,e;

struct polynode *head=NULL;

struct polynode *p1,*p2,*l,*r;

while(scanf("%d,%d%*c",&c,&e),c||e)

{

p2=(struct polynode *)malloc(sizeof(struct polynode));

p2->c=c;

p2->e=e;

p2->next=NULL;

if(head==NULL)

{head=p2;continue;}

for(l=r=head;l!=NULL&&(l->e)next) r=l;

if(l==head&&l->e>e) head=p2;

else r->next=p2;

p2->next=l;

}

return head;

}

void output(struct polynode* head)

{

struct polynode *p1;

p1=head;

if(p1==NULL)

{printf("\n multinomial is zero\n");return;}

printf("\n");

while(p1!=NULL)

{

printf(p1!=head&&(p1->c)>0? "+%d":"%d",p1->c);

printf(p1->e? "x^%d":"",p1->e);

p1=p1->next;

}

printf("\n");

}

struct polynode * add(struct polynode *head1,struct polynode *head2) {

struct polynode *p1,*p2,*r,*l,*h;

h=r=p1=head1;

p2=head2;

if(head1==NULL)

{h=head2;return h;}

while (p1!=NULL&&p2!=NULL)

{

if(p1->e==p2->e)

{

p1->c+=p2->c;

p2=p2->next;

r=p1;

p1=p1->next;

continue;

}

if(p1->ee)

{

r=p1;

p1=p1->next;

continue;

}

if(p1->e>p2->e)

{

l=p2;

相关文档
最新文档