数据结构课程设计报告-一元多项式加减运算.doc
- 文档编号:144279
- 上传时间:2022-10-04
- 格式:DOC
- 页数:25
- 大小:147.79KB
数据结构课程设计报告-一元多项式加减运算.doc
《数据结构课程设计报告-一元多项式加减运算.doc》由会员分享,可在线阅读,更多相关《数据结构课程设计报告-一元多项式加减运算.doc(25页珍藏版)》请在冰豆网上搜索。
山东理工大学计算机学院
课程设计
(数据结构)
班级
计科1102
姓名
张汝全
学号
1111051010
指导教师
肖爱梅
2013年1月7日
课程设计任务书及成绩评定
课题名称
动态链表结构下的一元多项式的加法、减法和乘法的实现。
Ⅰ、题目的目的和要求:
1.巩固和加深对数据结构的理解,通过上机实验、调试程序,加深对课本知识的理解,最终使学生能够熟练应用数据结构的知识写程序。
(1)通过本课程的学习,能熟练掌握几种基本数据结构的基本操作。
(2)能针对给定题目,选择相应的数据结构,分析并设计算法,进而给出问题的正确求解过程并编写代码实现。
2.设计题目要求:
1)首先判定一元多项式是否稀疏
2)分别采用顺序和链式结构实现;
3)结果在M(x)中无重复阶项和无零系数项;
4)要求结果以升幂排列输出
Ⅱ、设计进度及完成情况
日期
内容
1.7-1.9
选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。
1.10-1.12
创建相关数据结构,录入源程序。
1.13-1.15
调试程序并记录调试中的问题,初步完成课程设计报告。
1.16
上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。
1.17
考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。
Ⅲ、主要参考文献及资料
[1]严蔚敏数据结构(C语言版)清华大学出版社1999
[2]严蔚敏数据结构题集(C语言版)清华大学出版社1999
[3]谭浩强C语言程序设计清华大学出版社
[4]与所用编程环境相配套的C语言或C++相关的资料
Ⅳ、成绩评定:
设计成绩:
(教师填写)
指导老师:
(签字)
二年月日
目录
第一章概述……………………………………………………………1
第二章系统分析………………………………………………………2
第三章概要设计………………………………………………………3
第四章详细设计………………………………………………………4
第五章运行与测试……………………………………………………18
第六章总结与心得……………………………………………………20
参考文献………………………………………………………………21
第一章概述
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。
《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是动态链表结构下的一元多项式的加法、减法和乘法的实现。
一元多项式计算是用C语言设计一个一元多项式简单计算器。
它能够实现按指数升序排列建立并输出多项式,并且能够完成两个多项式的相加、相减与相乘的运算和将其结果输入的功能。
通过设计一元多项式,初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能提高,综合运用所学的理论知识和方法独立分析和解决问题的能力;加深对常用数据结构的理解,强化逻辑思维能力和动手能力,巩固良好的编程习惯,掌握工程软件设计的基本方法,为后续课程的学习打下坚实基础。
第二章系统分析
1.动态链表结构下的一元多项式的加法、减法、乘法的实现。
可以分为几个模块:
输入模块、输出模块(升幂)、数据处理模块(多项式的加减乘)、主程序模块。
2.在程序执行过程中加入汉字提示符,让使用者清楚明白的操作该程序。
运行程序时看起来简洁有序,操作简单明了。
3.程序执行时的命令:
①创建两个一元多项式②输入第一个一元多项式的项数③依次输入一元多项式的系数和指数④以相同方式输入第二个一元多项式⑤数据处理⑥输出结果。
4.测试数据。
输入的一元多项式系数指数分别为70,31,98,517和81,227,-98。
加法结果为:
7+11x+22x^(7)+5x^(17)
减法结果为:
7-5x-22x^(7)+18x^(8)+5x^(17)
5.乘法结果为:
56x+24x^
(2)+154x^(7)+3x^(8)+45x^(9)+198x^(15)-81x^(16)+40x^(18)+110x^(24)-45x^(25)
第三章概要设计
1.数据结构的设计
为了节省存储空间,只存储多项式中系数非零的项,本程序使用链式存储结构。
2.算法的设计本设计从总体上划分为3个模块。
a)主函数模块。
程序的入口,主要实现各个函数的调用。
b)头文件模块。
定义类和结构体。
c)函数模块。
数据处理和实现每个功能。
3.抽象数据类型
ADTlist{
数据对象:
D={ai|ai∈ElenSet,i=1,2,…,n,n≥0}
数据关系:
R1={
基本操作:
InitLink(&head,len)
初始条件:
链表为空。
操作结果:
创建链表。
Sparsity(&head,len)
初始条件:
链表已存在。
操作结果:
判断是否稀疏。
Display(head)
初始条件:
链表已存在。
操作结果:
输出多项式。
Merge(&head)
初始条件:
链表已存在。
操作结果:
合并指数相同的项。
SelectSort(&head)
初始条件:
链表已存在。
操作结果:
选择排序。
Negative(&head)
初始条件:
链表已存在。
操作结果:
取负。
DelZero(&head)
初始条件:
链表已存在。
操作结果:
删除系数为0的项。
operator+(&head,&b);
初始条件:
链表已存在。
操作结果:
重载+。
operator*(&head,&b);
初始条件:
链表已存在。
操作结果:
重载*。
}
第四章详细设计
1.类定义。
polynomial.h
#ifndefPOLYNOMIAL_H_INCLUDED
#definePOLYNOMIAL_H_INCLUDED
template
structNode{
Tcoef;//定义系数
Texpn;//定义指数
Node*next;
};//定义结构体
template
classLinkList{
private:
Node
public:
LinkList();//初始化链表
voidInitLink(intlen);//建立链表
voidSparsity(intlen);//是否稀疏
voidDisplay();//显示
voidMerge();//合并指数相同的项
voidSelectSort();//选择排序
voidNegative();//取负
voidDelZero();//删除系数为0的项
LinkList
LinkList
};
#endif//POLYNOMIAL_H_INCLUDED
2.成员函数。
polynomial.cpp
#include
#include"polynomial.h"
usingnamespacestd;
template
LinkList
:
LinkList(){
head=newNode
head->next=NULL;
}//初始化
template
voidLinkList
:
InitLink(intlen){
Node
q=head;
cout<<"系数指数:
"< while(len--){ p=newNode cin>>p->coef>>p->expn; p->next=NULL; q->next=p; q=p; } }//建立多项式 template voidLinkList : Display(){ DelZero(); Node q=head->next; if(! q){//空链表输出0 cout<<"0"< return; } if(q->coef){ if(q->coef==1){ if(q->expn==0){ cout< } elseif(q->expn==1){ cout<<"x"; } else{ cout<<"x^"<<"("< } } elseif(q->coef==-1){ if(q->expn==0){ cout< } elseif(q->expn==1){ cout<<"-x"; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计 报告 一元 多项式 加减 运算