数据结构实验多项式加法

数据结构实验多项式加法
数据结构实验多项式加法

数据结构实验报告

实验名称:多项式加减法

学号:19

姓名:林强

实验日期:一、实验目的

通过实现多项式的加减法,对链表有更深入的了解

二、实验具体内容

1、实验题目1:

(1)题目设计一个一元稀疏多项式简单的加减法计算器

实现要求:

一元稀疏多项式简单计算器的基本功能是:

(1)输入并建立多项式:

85

17

A+

x

+

x

=;

+

7

3

x

9

)

(x

79

8

x

B-

+

x

=

8

22

x

)

(x

(2)输出多项式

(3)多项式A和B相加,建立多项式C=A+B,并输出相加的结果多项式C

(4)选作:多项式A和B相减,建立多项式C=A-B,并输出相加的结果多项式D (2)分析

1:本程序的任务是实现两个多项式的加法其中多项式的系数为浮点型,

指数为整数,输出的结果也为系数和指数。

(1)输入的形式和输入值的范围:

输入多项式的系数a和未知数X的指数b,当a和b都为零时,输入结束。输入值的范围:a为实数,b为整数。

(2)输出形式:输出多项式的系数和多项式未知数X的指数即(a,b)形式。

(3)程序所能达到的功能,实现两个多项式的加法,并输出最后的结果

2:

整个程序运行期间实行动态创建节点,一边输入数据,

一边创建节点当将全部数据输入到单链表中后再调用多项式加法这

个函数,并一边实现多项式的相加,一边释放节点,有效防止了

在程序反复运行过程中可能出现系统空间不够分配的现象

(3)实验代码

typedef int Status;

#define OVERFLOW -1

#define null 0

typedef struct Lnode{

float coef; //

存储项系数

int expn;//

存储项指数

struct Lnode *next;

}Lnode,*LinkList;

typedef LinkList polynomial;

Status InitList_L(LinkList &L) {//

初始化头节点

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

if(!L)

return(-1);

L->next=null;

return 1;

}

void AddPolyn(polynomial pa, polynomial pb){ //实现两个多项式相加的算法

float x;

polynomial qa;

polynomial qb;

polynomial s;

polynomial u;

qa=pa->next; qb=pb->next; s=pa;

while(qa&&qb){

if(qa->expnexpn){

s=qa;

qa=qa->next;

}

else if(qa->expn==qb->expn){

x=qa->coef+qb->coef; if(x!=0){

qa->coef=x;

s=qa;

qa=qa->next;

u=qb;

qb=qb->next;

free(u);

}

else{

s->next=qa->next;

free(qa);

qa=s->next;

u=qb;

qb=qb->next;

free(u);

}

}

else if(qa->expn>qb->expn){

u=qb->next;

s->next=qb;

s=qb;

qb->next=qa;

qb=u;

}

}

if(qb)

qa->next=qb;

free(pb);

void main(){

float a;

int b;

polynomial L1;

polynomial L2;

LinkList q;

LinkList p;

LinkList m;

LinkList n;

InitList_L(L1);

q=L1;

InitList_L(L2);

p=L2;

cout<<"

请输入数据:

"<

for(;;){

cin>>a;

cin>>b;

if(a==0&&b==0)

break;

m=new Lnode;

m->coef=a;

m->expn=b;

q->next=m;

q=m;

q->next=null;

}//

循环输入第一个多项式的系数与指数for(;;){

cin>>a;

cin>>b;

if(a==0&&b==0)

break;

n=new Lnode;

n->coef=a;

n->expn=b;

p->next=n;

p=n;

p->next=null;

}//

循环输入第二个多项式的系数与指数

AddPolyn(L1,L2);//

调用多项式相加的算法

while((L1->next)!=null){

cout<<"("<next->coef<<","<next->expn<<")"<<" ";

L1=L1->next;

}//

输出计算结果

}

三、实验小结

通过编写多项加法这个程序,我将自己所学到的创建链表,

初始化链表和多项式加法算法都应用了一次,这使我们不仅仅只

是理论化的学习书本上的知识,而是将学习到的理论知识应用到

实际的操作中来增强我们的实际操作能力,这使我增加了实际操

作经验,也使我通过实际操作来认识到自己在程序编写上的不足

从而增强了我的实际编写程序的能力。

相关主题
相关文档
最新文档