顺序链式一元多项式加法、减法、乘法运算的实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;
}