顺序链式一元多项式加法、减法、乘法运算的实现

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

1.1设计内容及要求

1)设计内容

(1)使用顺序存储结构实现多项式加、减、乘运算。

例如:

10321058)(2456+-+-+=x x x x x x f ,x x x x x x g +--+=23451020107)(

求和结果:102220128)()(2356++-+=+x x x x x g x f

(2)使用链式存储结构实现多项式加、减、乘运算,

10305100)(1050100+-+=x x x x f ,x x x x x x g 320405150)(10205090+++-=

求和结果:1031040150100)()(102090100++-++=+x x x x x x g x f

2)设计要求

(1)用C 语言编程实现上述实验内容中的结构定义和算法。

(2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。

(3)用switch 语句设计如下选择式菜单。

***************数据结构综合性实验****************

*******一、多项式的加法、减法、乘法运算**********

******* 1.多项式创建 **********

******* 2.多项式相加 **********

******* 3.多项式相减 **********

******* 4.多项式相乘 **********

******* 5.清空多项式 **********

******* 0.退出系统 **********

******* 请选择(0—5) **********

*************************************************

*请选择(0-5):

1.2数据结构设计

根据下面给出的存储结构定义:

#define MAXSIZE 20 //定义线性表最大容量

//定义多项式项数据类型

typedef struct

{

float coef; //系数

int expn; //指数

}term,elemType;

typedef struct

{

term terms[MAXSIZE]; //线性表中数组元素

int last; //指向线性表中最后一个元素位置}SeqList;

typedef SeqList polynomial;

1.3基本操作函数说明

polynomial*Init_Polynomial();

//初始化空的多项式

int PloynStatus(polynomial*p)

//判断多项式的状态

int Location_Element(polynomial*p,term x)

在多项式p中查找与x项指数相同的项是否存在

int Insert_ElementByOrder(polynomial*p,term x)

//在多项式p中插入一个指数项x

int CreatePolyn(polynomial*P,int m)

//输入m项系数和指数,建立表示一元多项式的有序表p

char compare(term term1,term term2)

//比较指数项term1和指数项term2

polynomial*addPloyn(polynomial*p1,polynomial*p2)

//将多项式p1和多项式p2相加,生成一个新的多项式

polynomial*subStractPloyn(polynomial*p1,polynomial*p2) //多项式p1和多项式p2相减,生成一个新的多项式polynomial*mulitPloyn(polynomial*p1,polynomial*p2)

//多项式p1和多项式p2相乘,生成一个新的多项式

void printPloyn(polynomial*p)

//输出在顺序存储结构的多项式p

1.4程序源代码

#include

#include

#include

#define NULL 0

#define MAXSIZE 20

typedef struct

{

float coef;

int expn;

}term,elemType;

typedef struct

{

term terms[MAXSIZE];

int last;

}SeqList;

typedef SeqList polynomial;

void printPloyn(polynomial*p);

int PloynStatus(polynomial*p)

{

if(p==NULL)

{

return -1;

}

else if(p->last==-1)

{

return 0;

}

else

{

return 1;

}

}

polynomial*Init_Polynomial()

{

polynomial*P;

P=new polynomial;

if(P!=NULL)

{

P->last=-1;

return P;

}

else

{

return NULL;

}

}

void Reset_Polynomial(polynomial*p)

{

if(PloynStatus(p)==1)

{

p->last=-1;

}

}

int Location_Element(polynomial*p,term x)

{

int i=0;

if(PloynStatus(p)==-1)

return 0;

while(i<=p->last && p->terms[i].expn!=x.expn) {

i++;

}

if(i>p->last)

{

return 0;

}

else

{

return 1;

}

}

int Insert_ElementByOrder(polynomial*p,term x)

相关文档
最新文档