课程设计论文图的遍历

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计论文图的遍历

内蒙古科技大学

本科生课程设计论文

题目:C++课程设

-------图的遍历

学生姓名:齐枫

学号:1076807407

专业:计算机10

班级:(4)班

指导教师:

2012年6月18日~2011年7月4日

内蒙古科技大学课程设计任务书

一、前言

1.1课程设计的目的与意义 (4)

1.2对课程设计功能的需求分析 (4)

二、算法思想 (5)

三、数据结构 (5)

四、模块划分 (6)

node* creategraph()//建立邻接表,完成无向图的输入

void DepthFirstSearch(node *list)//深度优先搜索

void BreadthFirstSearth(node *list)//广度优先搜索

void PathSearth(node *list)//路径搜索

void AdjacencyListDelete(node *list)//释放邻接表的空间AdjacencyListDelete(list);//释放邻接表空间

五、系统的概要设计

1、系统功能模块图 (9)

六、源程序 (10)

七、程序的调试分析以及测试结果

1、程序的调试测试结果 (20)

八、附录

1、附录一

心得 (21)

2、参考文献 (22)

一、前言

1.1课程设计的目的与意义

上学期我们对《数据结构》这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求我们掌握《数据结构》中的各方面知识,还要求我们具备一定的C++语言基础和编程能力。

通过实践我们掌握《数据结构》中的知识。对于《图的遍历》这一课题来说,所要求我们掌握的数据结构知识主要有:图的存储结构、队列的基本运算实现、图的深度优先遍历算法实现、图的广度优先遍历算法实现。

对于我们学生来讲,此次课程设计是为了让我们训练自己的实际设计能力,通过设计实践,去真正获得此项目管理和团队协作等方面的基本训练和工作经验。

通过课程设计的一系列训练,我们能提高如何综合运用所学知识解决实际问题的能力,以及获得此项目管理和团队协作等等众多方面的具体经验,增强对相关课程具体内容的理解和掌握能力,培养对整体课程知识综合运用和融会贯通能力。

1.2对课程设计功能的需求分析

图的遍历并不需要是一个过于复杂的工作环境,一般来说:最合适的才是最好的。软件设计必须符合我们使用实际情况的需要。根据要求,图的遍历主要功能如下:

1、用户可以随时建立一个有向图或无向图;

2、用户可以根据自己的需要,对图进行深度遍历或广度遍历;

3、用户可以根据自己的需要对图进行修改;

4、在整个程序中,用户可以不断的按照不同的方式对图进行遍历,若不继续,用户也可以随时跳出程序,同时,如果用户输入的序号错误,程序会提示用户重新输入序号;

二、算法思想

本课题本人所采用的是邻接表的方式存储图,实现图的深度、广度两种遍历,并将每种遍历结果输出来。并且能寻找路径。

2.1.1图的邻接矩阵的建立

对任意给定的图(顶点数和边数自定),,根据邻接表的存储结构建立图的邻接表。

2.1.2 图的遍历的实现

邻接表是图的一种链式存储结构,在邻接表中,对图中的每一个顶点建立一个单链表,通常以顺序结构存储,以便随机访问任意一顶点。

图的深度遍历,假设初始状态是图中所有顶点都未曾被访问,则深度优先遍历可从图中的某个顶点v出发,访问此顶点,依次从v的未被访问的邻接点出发深度优先遍历图,直至图中和v有路径想通的顶点都被访问到;若此时图中尚有未被访问的节点,则另选图中一个未被访问的顶点做起始点,直至所有节点都被访问。

图的广度优先遍历,是以v为起始点,由近及远,依次访问和v有路径相通且路径长度为1、2、…的顶点。

三、数据结构

#define t true

#define f false

#include

struct node//定义一个结构作为节点类型

{

int data;

bool sign;//标志位,用来标示是否遍历过

node *next;

};

四、模块划分

node* creategraph()//建立邻接表,完成无向图的输入};

表4.1邻接表的建立

void DepthFirstSearch(node *list)//深度优先搜索

void DepthFirstSearch(node *list)

cin>>k;

a[i]=k

图4.2 深度优先遍历流程图void BreadthFirstSearth(node *list)//广度优先搜索

表4.3图的广度遍历void PathSearth(node *list)//路径搜索

void AdjacencyListDelete(node *list)//释放邻接表的空间AdjacencyListDelete(list);//释放邻接表空间

五、系统的概要设计

main() /*包含一些调用和控制语句*/

图5.1系统功能模块图六、部分源程序

#define t true

#define f false

#include

struct node//定义一个结构作为节点类型

{

int data;

bool sign;//标志位,用来标示是否遍历过

node *next;

};

node* creategraph()//建立邻接表,完成无向图的输入{

int l,m,n;

bool g;

cout<<"请输入节点数: ";

cin>>n;

相关文档
最新文档