数据结构课程设计文档格式.docx
- 文档编号:22365899
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:24
- 大小:290.70KB
数据结构课程设计文档格式.docx
《数据结构课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计文档格式.docx(24页珍藏版)》请在冰豆网上搜索。
第5天课程设计报告和总结
指导教师(签字)
日期
年月日
教研室意见:
学生(签字):
接受任务时间:
年月日
注:
任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称
评分项目
分值
得分
评价内涵
工作
表现
20%
01
学习态度
6
遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。
02
科学实践、调研
7
通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。
03
课题工作量
按期圆满完成规定的任务,工作量饱满。
能力
水平
35%
04
综合运用知识的能力
10
能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。
05
应用文献的能力
5
能独立查阅相关文献和从事其他调研;
能提出并较好地论述课题的实施方案;
有收集、加工各种信息及获取新知识的能力。
06
设计(实验)能力,方案的设计能力
能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;
研究思路清晰、完整。
07
计算及计算机应用能力
具有较强的数据运算与处理能力;
能运用计算机进行资料搜集、加工、处理和辅助设计等。
08
对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)
具有较强的数据收集、分析、处理、综合的能力。
成果
质量
45%
09
插图(或图纸)质量、篇幅、设计(论文)规范化程度
符合本专业相关规范或规定要求;
规范化符合本文件第五条要求。
设计说明书(论文)质量
30
综述简练完整,有见解;
立论正确,论述充分,结论严谨合理;
实验正确,分析处理科学。
11
创新
对前人工作有改进或突破,或有独特见解。
成绩
指导教师评语
指导教师签名:
年 月 日
目录
1、地图着色问题设计-2-
1.1、需求分析-2-
2、概要设计-4-
2.1、设定地图的抽象数据类型-4-
2.2、本程序包括两个模块-4-
3、详细设计-6-
3.1、地图数据类型的操作设置-6-
3.2、两点是否邻接的伪码算法-6-
3.3、着色伪码算法-6-
3.4、将邻接矩阵存储伪码算法-7-
3.5、主程序和其他函数的伪码算法-7-
3.6、函数调用关系图反映了演示程序的层次结构-7-
4、调试分析-8-
5、课程设计总结-12-
6、附录着色后的中国地图-13-
7、参考文献-14-
8、程序源代码-15-
1、地图着色问题设计
1.1、需求分析
1.1、以二维数组list[N+1][N+1]表示地图,N表示区域数目,数组中以元素值为0表示不邻接,1表示邻接,限定区域数目N<
=50。
1.2、用户先输入区域数目N,再输入邻接区域的代码,邻接可只写一次,区域的代码为0~N,N个为区域,一个为外部区域,或输入N-1,则可不包括外部区域,N个区域由用户定义。
1.3、输出时,采用一一对应的方法,一个区域对应一种颜色形式:
区域代码==》颜色代码(1~4)=》颜色。
1.4、本程序可为任意一张的地图染色,并且至多只染四种颜色。
1.5、测试数据:
当区域数目N=8,地图如下:
输出为0=>
1=>
red
1=>
2=>
green
2=>
3=>
blue
3=>
4=>
yellow
4=>
5=>
6=>
7=>
8=>
1.6、程序执行的命令为:
1)创建地图
2)存储地图
3)获取地图
4)地图着色
5)退出
2、概要设计
2.1、设定地图的抽象数据类型
ADTlist{
数据对象:
D={ai,j|ai,jε{’0’、‘1’},0<
=i<
=N,0<
=j<
=N
数据关系:
R={ROW,COL}
ROW={<
ai-1,j,ai,j>
|ai-1,j,ai,jεD,i=1,…N,j=0,…,N}
COL={<
ai,j-1,ai,j>
|ai,j-1,ai,jεD,i=0,…N,j=1,…,N}
2.2、本程序包括两个模块
1)主程序模块:
voidmain()
{
初始化;
while
{
接受命令;
处理命令;
}
2)地图模块――实现地图抽象数据类型
各模块之间的调用关系如下:
主程序模块
地图模块
3)数据结构的设计
typedefstruct//定义图
vextypevexs[MAXedg];
//存放边的矩阵
adjtypearcs[MAXedg][MAXedg];
//图的邻接矩阵
intvnum,arcnum;
//图的顶点数和边数
}Graph;
4)功能模块的划分及模块间调用关系
3、详细设计
3.1、地图数据类型的操作设置
intcreat(intN,intlist[][MAX+1])
//初始化并创建地图的邻接矩阵
3.2、两点是否邻接的伪码算法
intlink(intx,int*dc,intn,intlist[][MAX+1])
//从1到n看是否与x相邻,是返回‘1’
//否则,返回‘0’
for(i=0;
i<
n;
i++)
if(list[dc[i]][x])return
(1);
return(0);
}
3.3、着色伪码算法
int*fco(int*color,intN,intlist[][MAX+1])
//遇到一个区域,给它最小的颜色,看他是否与该种颜色的区域邻接,是则另赋
//颜色,否则找下个区域,如果还不能着色,则前面区域另设颜色,直到成功
初始化颜色
N+1;
为第一个区域着色;
for(k=0;
k<
4;
k++)
如果第k种颜色还未有地区,则将其赋予第i个区域;
否则,看他是否与第k种颜色的地区相邻
if(!
link(i,dc[k],mcd[k],list))
{
dc[k][mcd[k]]=i;
color[i]=k+1;
mcd[k]=mcd[k]+1;
break;
}
}
if(color[i]==0)i=reset(i,color,mcd,dc,list);
3.4、将邻接矩阵存储伪码算法
intsave(intN,intlist[][MAX+1])
//将邻接矩阵存成文件
3.5、主程序和其他函数的伪码算法
voidmain
//主程序
while
(1)
//系统初始化,主界面
clrscr();
//清屏
显示清单
ReadCommand(cmd);
//读入一个操作命令符
Interpret(cmd);
//执行操作
3.6、函数调用关系图反映了演示程序的层次结构
1.Creat
2.save
3.load
4.fco
5.exit
Link
4、调试分析
4.1、首先使用了《离散数学》的解决方法,但在测试中国地图中出错,因为排序并不能解决递归调用的问题,后来省掉了排序,在使用开始那个例子时,第8
个区域不能着色,因此,改采用递归的方法
4.2、算法的时间复杂度为O(N),空间复杂度为O(N*N);
4.3、通过本次试验,我认识到采用递归方法比较快捷,实现方便
4.4、由于地图上各省连接关系太多,所以这里只给出简单的测试数据,来测试该程序的功能,如下:
给出如下示意图,省份抽象为点,接壤抽象为有边相连。
顶点为:
abcdefg
相邻边:
a-ba-fb-cb-eb-fc-dc-ec-fd-ee-fe-gf-g
图
(一)进入程序界面
图
(二)输入顶点数、边数及顶点
图(三)输入每条边的两个顶点
图(四)输出运行结果着色方案
图(五)整体截图
5、课程设计总结
本次课程设计时间是为期一个星期,然而经过一个星期的课程设计上机实验操作,而我所选择的课程设计题目是“地图着色问题求解”。
在本次数据结构课程设计的过程,每天下午都是对着电脑不停地分析问题解决问题写代码实验,不然就是翻阅资料、问同学老师。
在完成此项课程设计任务期间,我烦恼过、失落过、没有方向感过,也曾一度热情高涨。
其中的点点滴滴现在想起来都是让我我回味无穷的。
从本次的课程设计实验中让我体会到只有专业知识过硬基础扎牢了,同时设计的是时候做到细心、耐心、恒心才能运行出你所要的满意的结果。
数据结构课程设计实验的目的不仅仅是为了加强了我们动手,思考分析和解决问题的能力,也让我们体会学以致用的过程,同时也对我们巩固和加深了对数据结构的理解,有关思想的认识有所提高和加深,并也提高综合运用本课程所学知识到实践中的能力,培养了我们怎样
选参考书、怎样用参考书、怎样查阅相关手册以及文献资料的能力,让我们逐渐培养独立思考,深入研究,分析问题,解决问题的能力。
课程设计实验课使我认识到理论与实际的差别,懂得了怎样有效高效把理论与实际相结合的,因而在本次课程设计实验课中让我看到自己的理论知识掌握的程度,对理论知识的认识高度,虽然我在构思是很花费时间的,调试时也经常遇到这样或那样的低级错误,然而最终我还是比较顺利的完成了自己所选的课程设计题目,同时也在设计的过程中不断的积累自己的实战经验,为以后的学习以及编程打下了一个良好的基础,其中课程设计中的不足之处还希望老师能多多指点与建议。
6、附录着色后的中国地图
7、参考文献
8、程序源代码
#include<
stdio.h>
stdlib.h>
#defineMAXedg100
#defineMAX0
#defineN4//着色的颜色数
#definew1//两点之间的权值
intcolor[30]={0};
//来存储对应块的对应颜色
typedefcharvextype;
typedefintadjtype;
vextypevexs[MAXedg];
adjtypearcs[MAXedg][MAXedg];
intvnum,arcnum;
//***********************************************************
intLocateVex(GraphG,charu)
{
inti;
for(i=1;
=G.vnum;
{
if(u==G.vexs[i])
returni;
if(i==G.vnum)
printf("
Erroru!
\n"
);
exit
(1);
return0;
//**********************************************************
GraphCreateGraph(GraphG)//输入图
inti,j,k;
vextypev1,v2;
依次输入顶点数和边数:
scanf("
%d%d"
&
G.vnum,&
G.arcnum);
getchar();
图的各个顶点分别为:
%c"
G.vexs[i]);
}
for(j=0;
j<
j++)
G.arcs[i][j]=MAX;
输入每条边的两个顶点(权值默认为1):
G.arcnum;
&
v1);
getchar();
v2);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
G.arcs[i][j]=G.arcs[j][i]=w;
returnG;
//****************************************************************
voidPrintGraph(GraphG)//输出图的信息
inti,j;
此图的顶点为:
%c"
G.vexs[i]);
此图的邻接矩阵为:
for(j=1;
%d"
G.arcs[i][j]);
//******************************************************************
intcolorsame(ints,GraphG)//判断这个颜色能不能满足要求
inti,flag=0;
=s-1;
i++)//分别与前面已经着色的几块比较
if(G.arcs[i][s]==w&
&
color[i]==color[s])
flag=1;
break;
returnflag;
voidoutput(GraphG)//输出函数
color[i]);
voidtrycolor(ints,GraphG)//s为开始图色的顶点,本算法从1开始
if(s>
G.vnum)//递归出口
output(G);
else
=N;
i++)//对每一种色彩逐个测试
color[s]=i;
if(colorsame(s,G)==0)
trycolor(s+1,G);
//进行下一块的着色
//*****************************************************************
voidmain()
GraphG;
G=CreateGraph(G);
PrintGraph(G);
本次的着色方案为:
trycolor(1,G);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计