数据结构课设之图.docx

上传人:b****2 文档编号:2201888 上传时间:2022-10-27 格式:DOCX 页数:65 大小:375.86KB
下载 相关 举报
数据结构课设之图.docx_第1页
第1页 / 共65页
数据结构课设之图.docx_第2页
第2页 / 共65页
数据结构课设之图.docx_第3页
第3页 / 共65页
数据结构课设之图.docx_第4页
第4页 / 共65页
数据结构课设之图.docx_第5页
第5页 / 共65页
点击查看更多>>
下载资源
资源描述

数据结构课设之图.docx

《数据结构课设之图.docx》由会员分享,可在线阅读,更多相关《数据结构课设之图.docx(65页珍藏版)》请在冰豆网上搜索。

数据结构课设之图.docx

数据结构课设之图

算法与数据结构

课程设计

 

班级:

计科XXX

姓名:

aishu3

指导老师:

XXXX

注:

代码从28页开始

 

2010年6月14-2010年6月25日

《算法与数据结构》课程设计任务书

班级:

计科

课程设计题目:

图的基本操作及应用

数据结构课程设计是在学完数据结构课程之后的实践教学环节。

该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。

要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。

一.设计目的

1.能根据实际问题的具体情况,结合数据结构课程中的基本理论和基本算法,分析并正确确定数据的逻辑结构,合理地选择相应的存储结构,并能设计出解决问题的有效算法。

2.提高程序设计和调试能力。

学生通过上机实习,验证自己设计的算法的正确性。

学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改。

3.初步掌握软件开发过程中问题分析、系统设计、程序编码、测试等基本方法和技能。

4.训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5.培养根据选题需要选择学习书籍,查阅文献资料的自学能力。

二.设计任务

设计一个基于DOS菜单的应用程序。

要利用多级菜单实现各种功能。

内容如下:

1.无向图的基本操作及应用

1创建无向图的邻接矩阵

2创建无向图的邻接表

3无向图的深度优先遍历

4无向图的广度优先遍历

2.无向网的基本操作及应用

1创建无向网的邻接矩阵

2创建无向网的邻接表

3求最小生成树

3.有向图的基本操作及应用

1创建有向图的邻接矩阵

2创建有向图的邻接表

3拓扑排序

4.有向网的基本操作及应用

1创建有向网的邻接矩阵

2创建有向网的邻接表

3关键路径

4单源最短路径

5每对顶点之间的最短路径

三.设计指导

第一步:

根据设计任务,设计DOS菜单。

例如

选择1之后应该类似于

第二步:

设计菜单

voidShowMainMenu()

{

cout<<"\n";

cout<<"***************图的基本操作及应用******************\n";

cout<<"*1无向图的基本操作及应用*\n";

cout<<"*2无向网的基本操作及应用*\n";

cout<<"*3有向图的基本操作及应用*\n";

cout<<"*4有向网的基本操作及应用*\n";

cout<<"*5退出*\n";

cout<<"***************************************************\n";

}

voidUDG()

{

MGraphMG;

ALGraphALG;

intn;

do

{

cout<<"\n";

cout<<"***************无向图的基本操作及应用***************\n";

cout<<"*1创建无向图的邻接矩阵*\n";

cout<<"*2创建无向图的邻接表*\n";

cout<<"*3无向图的深度优先遍历*\n";

cout<<"*4无向图的广度优先遍历*\n";

cout<<"*5退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

CreatUDG_M(MG);

break;

case2:

CreatUDG_ALG(ALG);

dispgraph(ALG);

break;

case3:

break;

case4:

break;

default:

if(n!

=5)

cout<<"错误,重新输入\n";

}

}while(n!

=5);

}

voidUDN()

{

MGraphMN;

ALGraphALN;

intn;

do{

cout<<"\n";

cout<<"***************无向网的基本操作及应用***************\n";

cout<<"*1创建无向网的邻接矩阵*\n";

cout<<"*2创建无向网的邻接表*\n";

cout<<"*3prim算法求最小生成树*\n";

cout<<"*4kraskal算法求最小生成树*\n";

cout<<"*5退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

CreatUDN_M(MN);

break;

case2:

CreatUDN_ALG(ALN);

dispgraph_N(ALN);

break;

case3:

break;

case4:

break;

default:

if(n!

=5)

cout<<"错误,重新输入\n";

}

}while(n!

=5);

}

voidDG()

{

intn;

do

{

cout<<"\n";

cout<<"***************有向图的基本操作及应用***************\n";

cout<<"*1创建有向图的邻接矩阵*\n";

cout<<"*2创建有向图的邻接表*\n";

cout<<"*3拓扑排序*\n";

cout<<"*4退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

break;

case2:

break;

case3:

break;

default:

if(n!

=4)

cout<<"错误,重新输入\n";

}

}while(n!

=4);

}

voidDN()

{

intn;

do{

cout<<"\n";

cout<<"***************有向网的基本操作及应用***************\n";

cout<<"*1创建有向网的邻接矩阵*\n";

cout<<"*2创建有向网的邻接表*\n";

cout<<"*3关键路径*\n";

cout<<"*4单源顶点最短路径问题*\n";

cout<<"*5每对顶点间最短路径问题*\n";

cout<<"*6退出*\n";

cout<<"****************************************************\n";

cin>>n;

switch(n){

case1:

break;

case2:

break;

case3:

break;

case4:

break;

case5:

break;

default:

if(n!

=6)

cout<<"错误,重新输入\n";

}

}while(n!

=6);

}

voidmain()

{

intn;

do{

ShowMainMenu();

cin>>n;

switch(n){

case1:

UDG();

break;

case2:

UDN();

break;

case3:

DG();

break;

case4:

DN();

break;

default:

if(n!

=5)

cout<<"错误,重新输入\n";

}

}while(n!

=5);

}

无论多少级菜单,都可以用这种模式实现,并且当前菜单不用担心前面的问题,只需编写当前的功能函数。

第三步:

添加功能函数。

四.成绩评定

实习报告(文字不得少于4000字)

1.设计方案;//每个算法的来历,优点

2.实现过程;//框架之间是怎样连接的,怎么实现的

3.测试;//输入什么,得到什么

4.使用说明;//如何输入输出

5.难点与收获;

6.实现代码;

7.可改进的地方。

程序实现

1.完成基本结构图,程序中有三级菜单,完成基本操作者及格;

2.在第一条的基础上,任务完成的越多,成绩等级越高。

成绩由三部分组成:

平时考核(20%)、程序实现(50%)、实习报告(30%)

 

实习报告

前言

首先,我要感谢周老师、冯老师和其他帮助我完成这份实习报告的老师们,如果不是你们的帮助,我很难在这六天里完成这份艰巨的任务。

图是一种比线性表和树更为复杂的数据结构。

在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都有可能相关。

因此图的应用极为广泛,特别是近年来的迅速发展,已渗入诸如语言学、逻辑学、物理、化学、电讯工程、计算机科学以及数学的其他分支中。

要学好图这一章并熟练运用对我来说非常的困难,在这之前,必须学好《离散数学》中的图的理论,熟练掌握线性表的基本操作和应用,以及栈和队列还有树的相关知识。

限于这几章学得并不好,理解的也不透彻,所以在做课程设计时困难重重。

尽管遇到很多问题,但在这六天的不懈努力下,终于完成了。

为此,我简要介绍一下我所使用的工具和资料。

编译器:

vc6.0和vs8.0(vc2008);电脑:

学校机房和自己的;资料:

《数据结构(C语言版)》(严蔚敏吴伟民编著)和《数据结构》算法实现及解析(高一凡编著),互联网。

再次衷心的感谢帮助我老师们和同学们!

 

一:

实现方案

按照要求,需要设计四种图,两种数据存储结构,十六中基本操作及应用,三层以上的显示菜单。

图的操作中又包含有有关线性表、栈和队列的基本操作。

由于显示菜单已给出,剩下的只是把函数写入其中,而线性表、栈和队列的基本操作并不复杂,很容易实现,我们只有完成图的相关操作即可。

图的操作都是以两种存储结构为基础的,邻接矩阵存储结构和邻接表存储结构,如四种图(有向图,有向网,无向图,无向网)的创建,其他的操作都是在四种图创建后才开始进行的。

所以,首先必须理解两种存储结构的定义。

图的邻接矩阵存储结构即图的数组表示法。

用两个数组分别存储数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息。

用邻接矩阵存储结构的图具有以下几点特征:

(一):

顶点数:

vexnum,边(弧)数:

arcnum,图的种类:

kind;

(二):

邻接矩阵:

arcs(1顶点关系类型:

adj2相关信息:

*info);

(三):

顶点向量(顶点名):

vexs[];

其优点是以二维数组表示有n个顶点的图时,需存放n顶

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

当前位置:首页 > 人文社科 > 法律资料

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

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