数据结构课程设计_数据结构课程设计全

2020-02-28 其他范文 下载本文

数据结构课程设计由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“数据结构课程设计全”。

河海大学计算机与信息学院(常州)

数据结构课程设计

课程设计题目:

多 项 式 问 题

专业、年级:计算机科学与技术09级 学

号:

0962810226

名:

目 录

一、问题描述-------------3

二、需求分析-------------4

三、概要设计-------------4 1.概要设计目的与要求--4 2.概要设计内容--------4 3.功能算法描述与数据结构说明-------------------------5

四、详细设计-------------5

五、系统测试-------------8

六、使用说明-------------9

七、总结及心得体会-----10

多项式问题

一.问题描述

给你九个整数,这九个整数分别是x的8次方至0次方的系数,请你按照多项式的一半形式合理地构造(去除不必要的)。例如九个系数分别是为0,0,0,1,22,-333,0,1,-1,你要构造并输出一行多项式:x^5 + 22x^4 – 333x^3 + x – 1。

它的格式规则如下:

1.多项式的项必须按其指数从高到低排列。2.指数必须跟在符号“^”后显示。3.有常数的只显示常数项(无需跟x^0)。

4.只显示系数不为0的项;若系数全为0,需显示常数项。

5.在多项式中唯一需要空格的地方是项与项之间的加号或减号的两边需加上空格。

6.如果首项的系数是正数,则系数前不加符号;如果首项的系数是负数,则符号与数字之间不加空格,就如:-3x^2 +-2x。

7.系数为1,指数为0时,系数的1才显示(推广到系数为-1)。

输入/输出说明

1.输入/输出方式为文件方式,输入文件有一行或多行的系数,系数之间有空格分隔。

2.每行共有九个系数,每个系数的绝对值为小于1000的整数。输出文件包含构造完地多项式,每行一个多项式。

输入范例

0 0 0 1 22-333 0 1-1 0 0 0 0 0 0-55 5 0

输出范例

x^5 + 22x^4 – 333x^3 + x – 1-55x^2 + 5x

二.需求分析

2.1可行性研究

该程序主要从技术的角度来分析可行性。技术上的可行性研究主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。该系统采用了Windows 7操作系统结合Visual C++ 6.0等软件开发平台已成熟可行。硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,其硬件平台也比较能满足此系统的需要。

2.2结构与主要功能模块

从实现多项式输出过程的角度来分析,至少需要这样一些子功能模块。如: 1.多项式创建功能;

2.多项式输出功能;

3.释放多项式功能;

4.操作界面显示功能;

三.概要设计

1.概要设计目的与要求

通过多项式程序设计,使我们进一步掌握和利用C++语言进行结构化程序设计的能力;进一步理解和运用结构化程设计的思想和方法;初步掌握开发一个小型系统程序设计的基本方法;学会调试一个较长程序的基本方法;以及掌握书写课程设计开发文档的能力(书写课程设计报告)。总之,通过本课程设计加深对《C++语言》及《数据结构》课程所学知识的理解,进一步巩固C++语言语法规则,在程序中体现出算法的思想,提高程序的运行效率。学会编制结构清晰、风格良好、数据结构适当的C++语言程序,从而具备解决综合性实际问题的能力。

2.概要设计内容

多项式输出程序具有以下基本功能:

1.创建多项式。接收输入的数据,并保存到链表中。

2.Txt文档输入输出功能。

3. 清除内存内容,释放创建的链表,退出程序。

3.功能算法描述与数据结构说明

该多项式程序除了main()函数外,主要有以下函数:

node *CreatePolyn()

void firstnode(node *p)

void othernode(node *p)

void PrintPolyn(node *Pa)

void deletechain(node *h)

下面对这些函数逐一介绍。①.main()函数

main函数主要调用其他函数,用来实现输入、显示功能。

在main()函数中,定义一维数组p[]用来保存多项式的系数,Pa定义程序所需链表的头指针。在程序开始要求输入多项式的系数,随后创建链表以保存多项式,再显示出构建的符合要求的多项式。②.node *CreatePolyn()该函数功能是创建新的多项式链表。使用for语句,控制输入多项式的每一项。

③.void firstnode(node *p)该函数功能是判断输出多项式第一项。对于第一项的系数为1或-1,指数为0或-1等五种情况进行讨论。④.void othernode(node *p)该函数功能是判断输出多项式除第一项外的其它项。对于第一项的系数为1或-1,指数为0或-1等五种情况进行讨论。⑤.void PrintPolyn(node *Pa)该函数功能:显示构造的符合要求的多项式链表。在该函数中调用③、④函数,进行多项式的输出。⑥.void deletechain(node *h)该函数的功能是释放掉创建的链表,释放内存。

四.详细设计

下面讨论重要函数具体实现过程:

1.node *CreatePolyn()定义int i=9计数,当i>0时,for语句反复提示用户输入该多项式的每一项的指数。当i=1时,输入完毕,该链表也创建完毕。详细的实现过程如下:

node *CreatePolyn(){ node *head,*pa,*s;int i;

pa=head=new node;//创建一个新的结点

head->next=NULL;

for(i = 9;i >0;i--)// 依次输入9项

{

s=new node;

s->next=NULL;

s->coef = p[9-i];

s->exp=i-1;//x指数从8递减到0

if(s->coef!=0)//系数不为零时,结点p链接s

{

pa->next=s;

pa=s;

} } return head;} 2.void firstnode(node *p)对多项式第一项输出可能性进行多种分类讨论。

void firstnode(node *p)//输出多项式第一个结点 { //指数不为1且不为0,系数绝对值不为1(正常的输出)if(p->exp!=1&&p->exp&&fabs(p->coef)!=1)

{

if(p->coef>0)

{

outfilecoefexp;

}

else

{

outfilecoefexp;

} } if(p->exp==0)//指数为0,即常数项

{

if(p->coef>0)

{

outfilecoef;

}

else

{

outfilecoef;

} }

//指数大于0且不为1,系数绝对值为1 if(p->exp>0&&fabs(p->coef)==1&&p->exp!=1){

if(p->coef>0)

{

outfileexp;

}

else

{

outfileexp;

} } if(p->exp==1&&fabs(p->coef)!=1)//指数为1且系数绝对值不为1 {

if(p->coef>0&&p->coef!=1)

{

outfilecoef

}

if(p->coefcoef!=-1)

{

outfilecoef

} } if(p->exp==1&&fabs(p->coef)==1)//指数为1且系数绝对值为1 {

if(p->coef==1)

outfile

else

outfile

3.void PrintPolyn(node *Pa)该函数有一个参数,该指针指向多项式链表的头指针,以下是实现插入的关键代码: void PrintPolyn(node *Pa){ node *p;if(Pa->next==NULL)//首项判断,如果首项无,则显示“0”

outfile

return;else {

firstnode(Pa->next);} p=Pa->next->next;//定义指针p指向Pa的下下个指针

while(p!=NULL){

othernode(p);

p=p->next;

//将p指向下个一个结点

}

outfile

五.系统测试

该程序在VC6.0中调试通过,没有错误和警告,运行结果经过检验为正确。以下图为该程序运行结果效果图:

图5-1 范例

图5-2 一行输出

图5-3 多行输出

六.使用说明

1.打开1.txt文件,在里面任意输入9个整数,每个数字间要有空格,可以输入一行或者多行,输入多行的时候需要换行。

2.编译运行后,打开2.txt文件,即可看到输出的符合要求的多项式。

七.总结及心得体会

通过这次课程设计练习,使我更深刻地理解了C++语言的精髓-----指针的使用。完成整个程序设计有很大的收获,对指针掌握的更加熟练。

同时通过直接对单链表的操作,加深了对数据结构的理解和认识。并在完成课程设计的过程作主动查阅了相关资料,学到了不少课本上没有的技术知识。

经过这次课程设计,我深刻认识到算法在程序设计中的重要性,如何让程序简单、易读是这个课程设计的难点。程序总是由若干个函数构成的,这些相应的函数体现了算法的基本思想。

编程是一件枯燥乏味工作,但是只要认真专研,我们会从中学到很多在课本上学不到或者无法在课堂上掌握的知识,同时也能从中感受到编程的乐趣。兴趣是可以培养的,只要坚持下去,面对困难我们总能够找到解决问题的方法。

计算多项式的输出-----该程序虽然不是很大,但是自己独立完成这一任务也遇到不少的困难。另外也需要提出的是,非常感谢老师对我们的耐心指导,尤其是上机的时候给了我很多锻炼的机会。所以这次课程设计我才能够顺利的完成。

数据结构课程设计

课 程 设 计 任 务 书信息 学院 信息管理与信息系统 专业 09级1班 班 孙鹏一、二、课程设计题目: 迷宫求解、一元多项式 课程设计主要参考资料: 数据结构(C语言版) 严蔚敏、吴伟......

数据结构课程设计

数据结构课程设计题目(2013年)一、必做题 1、图书管理系统(线性表) [问题描述]设计一个程序,记录并统计图书使用情况。 [基本要求] (1)图书信息包括图书ID号,图书名,出版社名,出版年月......

课程设计(数据结构)

课程设计题目1、运动会分数统计任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或......

数据结构课程设计

《数据结构》课程设计报告学 号 姓 名 班 级 指导教师XXX XXX XXX XXX 安徽工业大学计算机学院2014年6月利用栈实现迷宫问题的求解一、问题描述以一个M*N的长方阵表示迷宫,0......

数据结构课程设计

数据结构课程设计计算机科学与技术2008级1班课程设计题目:图书借阅管理系统 姓名:学号:一.需求分析说明图书借阅处理过程简述处理过程主要包含:新增图书上架、办理图证、图书查询......

《数据结构课程设计.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
数据结构课程设计
点击下载文档
相关专题 数据结构课程设计全 数据结构 课程设计 数据结构课程设计全 数据结构 课程设计
[其他范文]相关推荐
[其他范文]热门文章
下载全文