数据结构多项式相加实验报告doc

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

数据结构多项式相加实验报告

篇一:数据结构实验多项式加法

数据结构实验报告

实验名称:多项式加减法

学号:1XX10419

姓名:林强

实验日期:XX.5.05

一、实验目的

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

二、实验具体内容

1、实验题目1:

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

现要求:

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

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

A(x)?7?3x?9x8?5x17;

B(x)?8x?22x7?9x8

(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){

coutnext->coefnext->expn L1=L1->next;

}//

输出计算结果

}

相关文档
最新文档