数据结构课程设计报告顺序结构动态链表结构下的一元多项式的加法减法乘法的实现Word文档下载推荐.docx
《数据结构课程设计报告顺序结构动态链表结构下的一元多项式的加法减法乘法的实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计报告顺序结构动态链表结构下的一元多项式的加法减法乘法的实现Word文档下载推荐.docx(24页珍藏版)》请在冰豆网上搜索。
日期
内容
1.2-1.3
选取参考书,查阅有关文献资料,完成资料搜集和系统分析工作。
1.4~1.5
创建相关数据结构,录入源程序。
1.6~1.7
调试程序并记录调试中的问题,初步完成课程设计报告。
1.9
上交课程设计报告打印版并进行课程设计答辩,要求每个同学针对自己的设计回答指导教师3-4个问题。
考核结束后将课程设计报告和源程序的电子版交班长统一刻光盘上交。
Ⅲ、主要参考文献及资料
[1]严蔚敏数据结构(C语言版)清华大学出版社1999
[2]严蔚敏数据结构题集(C语言版)清华大学出版社1999
[3]谭浩强C语言程序设计清华大学出版社
[4]与所用编程环境相配套的C语言或C++相关的资料
Ⅳ、成绩评定:
设计成绩:
(教师填写)
(签字)指导老师:
日十月一年二○一二
第一章概述……………………………………………………………1
第二章系统分析………………………………………………………2
第三章概要设计………………………………………………………3
第四章详细设计………………………………………………………4
第五章运行与测试……………………………………………………17
第六章总结与心得…………………………………………………19
20
参考文献……………………………………………………………….
第一章概述
课程设计是实践性教学中的一个重要环节,它以某一课程为基础,可以涉及和课程相关的各个方面,是一门独立于课程之外的特殊课程。
课程设计是让同学们对所学的课程更全面的学习和应用,理解和掌握课程的相关知识。
《数据结构》是一门重要的专业基础课,是计算机理论和应用的核心基础课程。
数据结构课程设计,要求学生在数据结构的逻辑特性和物理表示、数据结构的选择和应用、算法的设计及其实现等方面,加深对课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
在这次的课程设计中我选择的题目是顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。
分别采用顺序结构和链式存储结构,利用多项得结果,最后得多项式中不含有重复阶项和零系数得项。
除此之外,还得分为降幂和升幂两种排序方式。
。
1
第二章系统分析
1.顺序结构、动态链表结构下的一元多项式的加法、减法、乘法的实现。
可以分为几个模块:
输入模块、输出模块(升幂降幂)、数据处理模块(多项式的加减乘)、主程序模块。
2.在程序过程中加入汉字提示符,让使用者清楚明白的操作该程序。
运行程序时看起来简洁有序,操作简单明了。
3.程序执行时的命令:
①选择创建两个一元多项式②输入第一个一元多项式的项数③依次输入一元多项式的系数和指数④以相同方式输入第二个一元多项式⑤选择操作方式⑥选择降幂或升幂排序⑦输出结果⑧是否退出。
4.测试数据。
输入的一元多项式系数指数分别为70,31,98,517和81,227,-98。
加法结果为;
升幂降幂
减法结果为:
升幂降幂
乘法结果为:
2
第三章概要设计
1、数据结构的设计
在该程序中分别分为顺序存储和链式存储结构。
2、算法的设计
本程序主要分为四大模块
①主程序模块
②输入模块:
通过main函数输入
③输出模块(升幂降幂):
PrintPolyn函数实现输出
④数据处理模块(多项式的加减乘):
通过一元多项式的Polynomial基本操作实现
3、抽象数据类型的设计
一元多项式抽象数据类型的定义:
抽象数据类型Polynomial的定义:
3
第四章详细设计
#include<
iostream>
usingnamespacestd;
structterm//顺序表和链表的的定义
{
floatxishu;
//系数
intzhishu;
//指数
};
structLNode
termdata;
//term多项式值
structLNode*next;
typedefLNode*polynomail;
*/
/*合并同类项polynomailhebing(polynomailHead)
polynomailr,q,p,Q;
for(q=Head->
next;
q!
=NULL;
q=q->
next)//合并同类项
for(p=q->
next,r=q;
p!
)
if(q->
data.zhishu==p->
data.zhishu)//指数相等系数相加
q->
data.xishu=q->
data.xishu+p->
data.xishu;
r->
next=p->
Q=p;
p=p->
p
释放deleteQ;
//
}
else
r=r->
4
p=p->
returnHead;
//得到不含同类项的多项式
/*又小到大排列*/
voidarrange1(polynomailpa)
polynomailh=pa,p,q,r;
for(p=pa;
p->
next!
next);
r=p;
//r指向参与比较的最后一个
while(h->
=r)//大的沉底
for(p=h;
=r&
&
=r;
next)
if(p->
next->
data.zhishu>
data.zhishu)//比较指数的大小{
q=p->
next=q->
//指数大的向前移动
q->
next=q;
指向参与比较的最后一个,不断向前移动r=p;
//r
}
/*由大到小排序voidarrange2(polynomailpa)
polynomailh=pa,p,q,r;
r=p;
=r)//小的沉底
5
data.zhishu<
data.zhishu)//指数比较大小
//指数小的向后移动
//r指向参与比较的最后一个,不断向前移动
/*判断多项式的稀疏*/
booljudge(polynomailHead)//逻辑变量字符bool
arrange2(Head);
polynomailp;
p=Head->
boolxi=false;
while(p!
=NULL&
!
xi)
data.zhishu-p->
1)
xi=true;
returnxi;
*/求项数,打印多项式/*voidprintpolyn(polynomailP)
inti;
6
polynomailq;
if(P==NULL)
潣瑵?
无项<
<
endl;
elseif(P->
next==NULL)
cout<
Y=0<
该多项式为Y=;
q=P->
i=1;
if(q->
data.xishu!
=0&
data.zhishu!
=0)
data.xishu<
X^<
data.zhishu;
i++;
data.zhishu==0&
打印第一项cout<
//q=q->
if(q==NULL)
return;
while
(1)//while中,打印剩下项中系数非零的项,
data.xishu>
0)
cout<
+;
7
i++;
0)cout<
break;
/*1、创建并初始化多项式链表*/
polynomailcreatpolyn(intm)
polynomailHead,r,s;
Head=newLNode;
r=Head;