1、一元稀疏多项式计算器 (本实验项目方案受“教育部人才培养模式创新实验区(X3108005)”项目资助) 实验难度: A B C 序号学号姓名成绩12 指导教师: (签名)学期:任课教师: 实验题目: 一元稀疏多项式计算器 小 组 长: 联系电话: 电子邮件: 大学软件学院2012学年 秋季 学期数据结构实验成绩考核表学号:姓名: 本人承担角色: 评分项目评分指标分值得分实验构思(10%)1. 实验目的明确52. 实验内容理解透彻、对实验所涉及到的知识点分析到位5实验设计(15%)1. 有对基本数据结构的抽象数据类型定义52. 实验方案设计完整,数据结构、算法选择合理 53.算法结构和程序功能模
2、块之间逻辑清晰、有相应的流程图5实验实现(25%)1. 代码编写规范、风格统一、注释清楚易读 52. 程序运行正常,测试结果正确153. 界面友好、易于操作、有较强的容错性5实验报告撰写(10%)1. 内容详实无缺漏,文字流畅、图表清楚52. 实验结果分析客观、详细,实验体会真实可信,对原实验方案的改进和对实验内容的发散性思考5个人工作量(30%)1. 个人完成工作量152. 个人技术水平103. 团队合作精神5实验运作(10%)1. 有一定用户群52. 应用前景分析5综合得分: (满分100分)指导教师: 年 月 日云南大学软件学院2010学年 秋季 学期数据结构实验成绩考核表学号: 201
3、11120 姓名: 本人承担角色: 函数实现 整体流程控制 评分项目评分指标分值得分实验构思(10%)1. 实验目的明确52. 实验内容理解透彻、对实验所涉及到的知识点分析到位5实验设计(15%)1. 有对基本数据结构的抽象数据类型定义52. 实验方案设计完整,数据结构、算法选择合理 53.算法结构和程序功能模块之间逻辑清晰、有相应的流程图5实验实现(25%)1. 代码编写规范、风格统一、注释清楚易读 52. 程序运行正常,测试结果正确153. 界面友好、易于操作、有较强的容错性5实验报告撰写(10%)1. 内容详实无缺漏,文字流畅、图表清楚52. 实验结果分析客观、详细,实验体会真实可信,对
4、原实验方案的改进和对实验内容的发散性思考5个人工作量(30%)1. 个人完成工作量152. 个人技术水平103. 团队合作精神5实验运作(10%)1. 有一定用户群52. 应用前景分析5综合得分: (满分100分)指导教师: 年 月 日(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四,个人报告按下面每一项的百分比打分。难度A满分70分,难度B满分90分)一、【实验构思(Conceive)】(10%)多项式计算器的呈现方式是用控制台程序呈现,;多项式的加减乘以及求导的函数中利用链表保存头结点以及循环结构保存和输出数据;还有利用一个简单的降序排列的函数,在输出
5、时更加明了。二、【实验设计(Design)】(20%)在头文件中申明变量,源文件中创建指数和系数的指针的头结点,并为此申请空间。首先考虑指数为0,1和系数为0,1时的特殊情况的表示;然后利用SORT函数对输出时进行降序排列;其次就是加减乘以及求导函数的实现;最后是一个输出界面的设计。三、【实现描述(Implement)】(30%)/-函数原型说明-typedef struct Node double xishu; int zhishu;/数据域 /int data; struct Node* pnext;/指针域Node,*pNode;pNode phead=(pNode)malloc(siz
6、eof(Node);/创建头节点pNode creat_list(void);创建链表void traverse_list(pNode phead);/遍历链表pNode sort(pNode phead);/对链表进行降序排列pNode add(pNode phead1,pNode phead2);/两个多项式相加pNode hebing(pNode phead)/合并同类项pNode multi(pNode phead1,pNode phead2);/多项式相乘pNode sub(pNode phead1,pNode phead2);/多项式相减/多项式求导没有声明和定义函数,而是直接卸载
7、程序里了/-关键操作的实现-1.对链表的声明和定义和对创建函数的定义。 #include stdafx.h#include cpxNum.htypedef struct Node double xishu; int zhishu;/数据域 /int data; struct Node* pnext;/指针域Node,*pNode;pNode creat_list(void) int len; int i; /int val; int zhishu; double xishu; pNode phead=(pNode)malloc(sizeof(Node);/分配了一个不存在有效数据的头结点 pN
8、ode ptail=phead; ptail-pnext=NULL; if(phead=NULL) cout分配失败endl; exit(-1); cout请输入想输入多项式的项数len; for(i=0;ilen;i+) cout请?输?入?第i+1个?项?的?系数y的?值xishu; cout请?输?入?第i+1个?项?的?指?数y的?值zhishu; pNode pnew=(pNode)malloc(sizeof(Node); if(pnew=NULL) cout分?配?失败xishu=xishu; pnew-zhishu=zhishu; ptail-pnext=pnew; pnew-p
9、next=NULL; ptail=pnew; phead-zhishu=len; return phead;2.对多项式遍历,排序,同类项合并的定义1. 多项式的遍历/将多项式分为第一项和其余项两部分考虑,另外考虑指数=0,指数=1,系数=1,系数=0等情况。void traverse_list(pNode phead) pNode p=phead-pnext; if(p-zhishu=0) coutxishu; else if(p-zhishu=1) cout(xishu)xishu=1) coutxzhishu; else if(p-xishu=0) cout0; else cout(xi
10、shu)xzhishu; p=p-pnext; while(p) if(p-zhishu=0) cout+xishu; else if(p-zhishu=1) coutx+(xishuxishu=1) cout+xzhishu; else if(p-xishu=0) cout+0; else cout+(xishu)xzhishu; p=p-pnext; coutzhishu; for(i=0,p=phead-pnext;ipnext) for(j=i+1,q=p-pnext;jpnext) if(p-zhishuzhishu) xishu=p-xishu; zhishu=p-zhishu ;
11、 p-xishu=q-xishu; p-zhishu=q-zhishu; q-xishu=xishu; q-zhishu=zhishu; return f;3. 合并排序/通过检查将同类型合并,在加法,减法和乘法函数中会用到pNode hebing(pNode phead) pNode r,q,p,Q; for(q=phead-pnext;q!=NULL;q=q-pnext)/合?并同?类项? for(p=q-pnext,r=q;p!=NULL;) if(q-zhishu=p-zhishu)/指?数y相等 系数y相加 q-xishu=q-xishu+p-xishu; r-pnext=p-pnext; Q=p;p=p-pnext; delete Q;/释放?p else r=r-pnext; p=p-pnext; return phead; 3.多项式的加,减,乘,求导,x代入值的实现1. 多项式的加法/创建一个新链表存储新的多项式,开始对phead1和phead2进行扫描,指数相同就相加。pNode add(pNode phead1,pNod
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1