数据结构课程设计—一元多项式加法、减法、乘法运算的实现
更新时间:2023-11-24 03:02:01 阅读量: 教育文库 文档下载
1.一元多项式加法、减法、乘法运算的实现 1.1设计内容及要求 1)设计内容
(1)使用顺序存储结构实现多项式加、减、乘运算。 例如:
f(x)?8x?5x?10x?32x?x?106542,g(x)?7x5?10x4?20x3?10x2?x
求和结果:f(x)?g(x)?8x6?12x5?20x3?22x2?10 (2)使用链式存储结构实现多项式加、减、乘运算,
f(x)?100x100?5x50?30x10?10,g(x)?150x90?5x50?40x20?20x10?3x
求和结果:f(x)?g(x)?100x100?150x90?40x20?10x10?3x?10 2)设计要求
(1)用C语言编程实现上述实验内容中的结构定义和算法。
(2)要有main()函数,并且在main()函数中使用检测数据调用上述算法。 (3)用switch语句设计如下选择式菜单。
***************数据结构综合性实验**************** *******一、多项式的加法、减法、乘法运算********** ******* 1.多项式创建 ********** ******* 2.多项式相加 ********** ******* 3.多项式相减 **********
******* 4.多项式相乘 ********** ******* 5.清空多项式 ********** ******* 0.退出系统 ********** ******* 请选择(0—5) ********** ************************************************* *请选择(0-5):
1.2数据结构设计
根据下面给出的存储结构定义:
1
#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)
2
//将多项式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
#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; }
3
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; } }
4
int Insert_ElementByOrder(polynomial*p,term x) {
int j;
if(PloynStatus(p)==-1) return 0;
if(p->last==MAXSIZE-1) {
cout<<\ return 0; }
j=p->last;
while(p->terms[j].expn
p->terms[j+1]=p->terms[j]; j--; }
p->terms[j+1]=x; p->last++; return 1; }
int CreatePolyn(polynomial*P,int m) {
float coef; int expn; term x;
if(PloynStatus(P)==-1) return 0; if(m>MAXSIZE) {
printf(\顺序表溢出\\n\ return 0; } else {
printf(\请依次输入%d对系数和指数...\\n\ for(int i=0;i scanf(\ x.coef=coef; x.expn=expn; if(!Location_Element(P,x)) { Insert_ElementByOrder(P,x); } 5
正在阅读:
数据结构课程设计—一元多项式加法、减法、乘法运算的实现11-24
2018-2019年高中政治吉林高考汇编测试试卷含答案考点及解析11-29
我碰到了我梦中的好老师08-02
低压电工作业考试题五及答案05-31
员工手册(修改第八版印刷版) 204-24
使用IT平衡记分卡进行IT服务绩效考核05-18
关于安装工程结算审核的步骤及方法01-28
爱美的热带鱼作文600字06-22
PCR与PLS实验报告(第二稿)05-07
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 多项式
- 减法
- 加法
- 乘法
- 数据结构
- 运算
- 一元
- 课程
- 实现
- 设计