- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
云南大学软件学院数据结构实验二实验报告——多项式计算器
(本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助)
学号:姓名:专业: 指导老师:
实验难度 A □ B □ C □ 承担任务
(难度为C时填写) 指导教师评分 (签名)
【实验题目】
实验2. 线性表及其应用
【问题描述】
用C或C++语言设计并实现一个一元稀疏多项式的简单计算器。
【基本要求】
一元稀疏多项式简单计算器的基本功能是:
1、输入并建立多项式
2、输出多项式,序列按指数降序排列
3、多项式A(x)和B(x)相加,并建立多项式A(x)+B(x)
4、多项式A(x)和B(x)相减,并建立多项式A(x)-B(x)
5、给定 x 的值,计算多项式
6、多项式A(x)和B(x)相乘,建立多项式A(x)*B(x) (* 选做,作为难度B的操作)
【CDIO项目要求】
1、有完整的CDIO四个阶段描述
2、有友好美观的操作界面
3、有软件使用说明或帮助文档
4、项目成员分工明确,团结协作【实现提示】
一、【实验构思(Conceive)】(10%)
本实验通过C语言实现了多项式加法、减法、乘法、多项式求导、多项式积分的功能。
利用了冒泡排序的算法作为排序的核心算法。
运用了高等数学中多项式的求导积分的知识。
二、【实验设计(Design)】(15%)
本程序定义了抽象数据结构listnode,用于存储多项式的系数和指数并存储指向下一个listnode的指针来构成链表。
本程序包含如下*个函数:
Main函数:调用input函数—调用bubble_sort函数—调用operplus函数—调用oper_minus函数—调用oper_mul函数—调用oper_dy函数—调用oper_jifen函数。
Oper_plus函数:将两个链表的相应项系数相加,指数不同项不操作,存入新链表,再调用排序算法,使之为降序排列。
Oper_minus函数:将两个链表的相应项系数相减,指数不同项不操作,存入新链表,再调用排序算法,使之为降序排列。
Oper_mul函数:将两个链表的相应项系数相乘,指数指数相加,存入新链表,再调用排序算法,使之为降序排列。
Oper_dy函数:将链表的相应项系数乘以指数,指数减一,存入新链表,再调用排序算法,使之为降序排列。
Oper_jifen函数:将链表的相应项系数除以指数+1,指数加一,存入新链表,再调用排序算法,使之为降序排列。
Bubble_sort函数:使用冒泡排序的算法使链表的各个元素成降序排列,并合并同类项,返回链表头指针。
Myprintf函数:用于格式化输出多项式的每一项,消除为1的系数以及为1的指数,使之看上去与人类写法差不多。
三、【实现描述(Implement)】(25%)
(本部分Listnode包含3个成员变量:系数、指数、指向下一个的指针。
关键算法:bubble_sort函数,时间复杂度:n^2。
四、【测试结果(Testing)】(20%)
测试数据如图:
实验结果:
四、【实验总结】(10%)
这是第一次用链表编写多项式运算器,感到使用抽象数的类型的线性表的方便之处,以后还会多多使用的。
本次试验在很多地方使用了代码的重用。极大的减少了代码的行数。
五、【项目运作描述(Operate)】(10%)
能减轻多项式运算大部分的压力,方便同学们日常使用,加法、减法、乘法、求导、积分这些看似简单的运算常常会占用我们大量的时间,使这软件有一定的实用价值。
六、【代码】(10%)
// 定义控制台应用程序的入口点。
//
#include stdafx.h
#include stdlib.h
typedef struct node
{
float con;
int exp;
struct node * next;
}listnode;
listnode * head;
listnode * p;
listnode * q;
listnode * r;
listnode * head1;
listnode * head2;
int head_num = 0;
listnode * point[2];
void input()
{
int j = 0;
int exp;
float con;
head = (listnode *) malloc (sizeof(listnode));
head -next = NULL;
start: scanf(%f %d,con,exp);
if (exp == 0 con == 0)
goto next;
p = (listnode *) malloc (sizeof
您可能关注的文档
- 中智体检服务协议模版-051010.doc
- 中期引产的临床路径.doc
- 中期报告 陈曦.doc
- 中毒、溺水的抢救1.ppt
- 中油昆仑肇庆加气母站安装工程施工合同.doc
- 中毒急危重症患者的营养支持与护理.ppt
- 中海发展股份有限公司财务分析报告.doc
- 中班—我也要搭车.ppt
- 中班下学期安全教案 Microsoft Word 文档.doc
- 中海黎香湖开盘方案-重庆.ppt
- 投资项目管理师之投资建设项目实施练习试题附带答案.docx
- 投资项目管理师之投资建设项目实施考前冲刺检测卷包括详细解答.docx
- 2023年投资项目管理师之投资建设项目实施考前冲刺练习题库提供答案解析.docx
- 投资项目管理师之投资建设项目实施考前冲刺模拟题库包括详细解答.docx
- 2022-2023年二级注册建筑师之建筑结构与设备综合提升模拟题库.docx
- 投资项目管理师之投资建设项目实施考前冲刺模拟考试试卷和答案.docx
- 投资项目管理师之投资建设项目实施综合提升训练试卷和答案.docx
- 投资项目管理师之投资建设项目实施考前冲刺练习题库提供答案解析.docx
- 2022-2023年二级注册建筑师之建筑结构与设备综合提升模拟题库提供答案解析.docx
- 投资项目管理师之投资建设项目实施训练试卷附答案.docx
文档评论(0)