数据结构课程设计文档格式.docx

上传人:b****8 文档编号:22365899 上传时间:2023-02-03 格式:DOCX 页数:24 大小:290.70KB
下载 相关 举报
数据结构课程设计文档格式.docx_第1页
第1页 / 共24页
数据结构课程设计文档格式.docx_第2页
第2页 / 共24页
数据结构课程设计文档格式.docx_第3页
第3页 / 共24页
数据结构课程设计文档格式.docx_第4页
第4页 / 共24页
数据结构课程设计文档格式.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数据结构课程设计文档格式.docx

《数据结构课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计文档格式.docx(24页珍藏版)》请在冰豆网上搜索。

数据结构课程设计文档格式.docx

第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);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1