数据结构 07082018
用链表实现多项式的四则运算
——数据结构第二次上机作业
班级 07082 姓名 丁敏 学号 07082018
上机时间 2011年3月31日 报告时间:2011年4月5日 实验目的:
熟练使用指针,熟悉链表及其操作;利用链表解决实际问题 要求:
能够实现任意项有理多项式的加、减、乘、除、求模以及幂运算
多项式的除法注意除不尽的处理 测试用例尽可能多,且说明用例的必要性 用例必须包含一个自己系数为自己的学号
摘要:
多项式的四则运算问题是个很有趣的问题,它类似于有理数的四则运算,但又不仅仅于此.本篇课程论文重点研究了数据结构中多项式的四则运算问题。本论文的程序是通过Microsoft Visual Studio 2010编译,来解决多项式的加、减、乘、除四则运算问题,从而达到了解数据结构的实用性及程序语言对于数学问题研究的重要性的目的。
07082018 数据结构
多项式的四则运算
正文:
0 需求分析: 0.1 问题描述
编写程序来实现多项式的四则运算。
0.2 基本要求
⑴输入多项式的系数与指数,输入值为float型,输出值为float型;
⑵能够完成多项式之间的四种计算方式(+、-、*、/)。
0.3函数说明
typedef struct PolyNode:结构体变量,定义 int型指数和float
系数;
PolyList CreatePolyList():创建多项式列表,返回头指针; DisplayPolyList(PolyList Poly):显示多项式;
DestroyPolyList(PolyList L):释放链表所用存储空间; MergePoly(PolyList Poly):将多项式合并同类项; SortPoly(PolyList Poly):将多项式按升序排列;
PolyList PolyAdd(PolyList PolyA , PolyList PolyB):多项式相加,返回和多项式链表头指针;
PolyList PolySub(PolyList polyA , PolyList polyB):多项式相减,返回差多项式链表头指针;
PolyList PolyMutiply(PolyList PolyA , PolyList PolyB):多项式相乘,结果由Poly c返回;
PolyList PolyDivide(PolyList PolyA , PolyList PolyB):多项式相除,商和余数用系数为0的结点分开。
1 程序执行结果及分析: 1.1 执行结果
⑴
*******多项式的创建*******
请输入多项式的第1项的系数和指数(用逗号分开):3,2 请输入多项式的第2项的系数和指数:2,0 请输入多项式的第3项的系数和指数:0,0
输入的多项式A: 3.000000*x^2 + 2.000000*x^0
请输入多项式的第1项的系数和指数(用逗号分开):2,2 请输入多项式的第2项的系数和指数:3,1 请输入多项式的第3项的系数和指数:0,0
输入的多项式B: 2.000000*x^2 + 3.000000*x^1
2 多项式的四则运算
合并排序后的多项式A: 3.000000*x^2 + 2.000000*x^0 合并排序后的多项式B: 2.000000*x^2 + 3.000000*x^1 *******多项式的四则运算*******
A+B: 5.000000*x^2 + 3.000000*x^1 + 2.000000*x^0 A-B: 1.000000*x^2 + -3.000000*x^1 + 2.000000*x^0
A*B: 6.000000*x^4 + 9.000000*x^3 + 4.000000*x^2 + 6.000000*x^1 A/B: 1.500000*x^0 ......-4.500000*x^1 + 2.000000*x^0 请按任意键继续. . . ⑵
*******多项式的创建*******
请输入多项式的第1项的系数和指数(用逗号分开):1,1 请输入多项式的第2项的系数和指数:0,0 输入的多项式A: 1.000000*x^1
请输入多项式的第1项的系数和指数(用逗号分开):0,0 输入的多项式B: 0
合并排序后的多项式A: 1.000000*x^1 合并排序后的多项式B: 0
*******多项式的四则运算******* A+B: 1.000000*x^1 A-B: 1.000000*x^1 A*B: 0
Error:除项为空! A/B:
请按任意键继续. . . ⑶
*******多项式的创建*******
请输入多项式的第1项的系数和指数(用逗号分开):2,3 请输入多项式的第2项的系数和指数:2/3,1 (出现乱码)
1.2 测试用例
(1)
3 多项式的四则运算
(2)
(3)
(4)输入:
输出:
4 多项式的四则运算
1.3结果分析
通过三次的运行,一二两次成功,但第三次乱码。从第三次的运行来
看由于输入与所要求的不一样二出现乱码,故非程序的问题,所以本程序符合多项式的运算要求,是正确的。
2 程序的评价:
⑴程序符合需求,能够有效地运行多项式之间的运算; ⑵程序结构合理,具有层次性,易读;
⑶程序运行界面友好,且不与别的程序相冲突
⑷由于程序会出乱码现象,所以还有一定的缺陷;
3 总结:
本文的重点是对多项式的各种关系通过编程进行处理。笔者通过通过Microsoft Visual Studio 2010编译完成了所要求的内容。值得指出的是:本程序层次性较强,易读,且具有较高的精度,如进一步改善,将会有很强的适用性。
笔者当然也碰到许多的问题,比如算法设计上仍有很大不足,流程图画的不是很熟练,全局变量不会定义,main函数的顺序位置等。这些问题都可以通过实践来解决,总之,一句话熟能生巧。
附录
#include
#include
5 int exp; //指数 float coef; //系数 PolyNode* next; }PolyNode , * PolyList;