数据结构-无向图的操作-课程设计-实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无向图的操作 年级专业 成 绩
1、课题设计目的:一、熟悉图的两种常用的存储结构,邻接矩阵。 二、建立有向图,用邻接表存储结构存储。 三、在邻接表存储结构上实现深度优先遍历。 课题设计 目的与 设计意义 2、课题设计意义:一、能够熟悉关于无向图邻接矩阵和无向图邻接 表的输出建立等操作。 二、能够理解关于无向图的基本操作有何目的与 意义。 三、将以上的理解加以运用与操作。 指导教师: 年 月 日
目
录
第一章 课程设计的目的与意义.............................................................................................. 1 第二章 课程设计的内容与要求.............................................................................................. 1 2.1 课程设计的内容.............................................................................................................1 2.1.1 定义....................................................................................................................... 1 2.1.2 操作....................................................................................................................... 2 2.2 课程设计的要求.............................................................................................................2 第三章 需求分析.......................................................................................................................... 2 3.1 原理....................................................................................................................................2 3.2 要求....................................................................................................................................3 3.3 系统总框架......................................................................................................................3 3.4 运行环境.......................................................................................................................... 3 3.5 程序的输入(包含输入的数据格式和说明)..................................................... 4 3.6 开发工具.......................................................................................................................... 4 第四章 算法与描述......................................................................................................................4 4.1 图的深度优先遍历........................................................................................................ 4 4.2 具体过程应为................................................................................................................. 4 第五章 源程序............................................................................................................................... 5 第六章 运行结果........................................................................................................................ 12 第七章 结束语.............................................................................................................................17 第八章 参考文献........................................................................................................................ 18
数 据 结 构 课 程 设 计
本课程设计已调试通过,请放心使用。请到:道客巴 巴或豆丁网充值购买 word 版,省打字,直接修改即可,价 格较便宜,在这里百度较贵! 搜索:数据结构-无向图的操作-课程设计-实验报告
பைடு நூலகம்
设计题目: 学生姓名: 专业班级: 指导教师: 完成时间:
无向图的操作
课题名称 院 学 系 号 姓 名
第一章 课程设计的目的与意义
图是一种复杂的非线性结构。在人工智能、工程、数学、物理、化学、计算机科 学等领域中,图结构有着广泛的应用。 在线性结构中,结点之间的关系是线性关系,除开始结点和终端结点外,每个结 点只有一个直接前趋和直接后继。 在树形结构中, 结点之间的关系实质上是层次关系, 除根结点之外,每个结点都只能有一个双亲(前趋) ,但每个结点可以有零个或多个 孩子(后继) 。因此,层次关系是非线性的。但是,它在树的结点之间建立了一个层 次结构;同层次上的每个结点可以和下一层的零个或多个结点(即孩子)相关,但只 能和上一层的一个结点(即双亲)相关(根节点除外) 。然而在土结构中,对结点(图 中常称为顶点)的前趋和后继个数都是不加限制的,即结点之间的关系是任意的。图 中任意两个结点之间都可能相关。 邻接表(Adjacency List)是图的一种顺序存储与链式存储结合的存储方法,类似于 树的孩子链表表示法。 由于它只考虑非零元素,因而节省了零元素所占的存储空间。 它 对于无向图和有向图都适用。 本学期我们学了很多图的存储结构,有邻接矩阵。邻接表等。其中邻接矩阵和邻 接表为图的主要存储结构。图的邻接矩阵存储结构的主要特点是吧图的边信息与链式 存数相结合的存储方法。 从空间性能上说, 图越洗漱邻接表的空间效率也相应的越高。 从时间性能上来说,邻接表在图的算法中时间代价较邻接矩阵要第。 本课程设计主要是实现使用邻接表存储结构存储一个图,并在所存储的图中实现 深度优先和广度优先遍历以及其链表结构的输出。 通过实习巩固并提高我的 C 语言知 识,并初步了解 Visual C++的知识,提高编程能力与专业水平。 第二章 课程设计的内容与要求 2.1 课程设计的内容 2.1.1 定义 有向图与无向图:图是一种复杂的非线性结构。图 G 由两个集合 V 和 E 组成,记为 G=(V,E) ,其中 V 是顶点的有穷非空集合,E 是 V 中顶点偶对 (称为边)的有穷集。通常,也将图 G 的顶点集和边集分别记为 V (G)和 E(G) 。E(G)可以是空集,若 E(G)为空,则图 G 只 有顶点而没有边。若图 G 中的每条边都是有方向的,则称 G 为有 向图;若图 G 中的每条边都是没有方向的,则称 G 为无向图。 邻接矩阵:邻接矩阵是表示定点之间相邻关系的矩阵。
1
邻接表:对于图 G 中的每个顶点 vi,该方法把所有邻接于 vi 的顶点 vj 链成一个单链 变,这个单链表就成为顶点 vi 的邻接表。 2.1.2 操作 熟悉掌握关于无向图邻接表和邻接矩阵的运用以及操作,包括: 无向图邻接矩阵的建立、 无向图邻接矩阵的输出、 无向图邻接表的建立、 无向图邻接表的输出、 无向图邻接表的深度遍历、 无向图邻接矩阵的深度遍历、 无向图邻接表的广度遍历、 无向图邻接矩阵的广度遍历。 2.2 课程设计的要求 一、能够熟悉关于无向图邻接矩阵和无向图邻接表的输出建立等操作。 二、能够理解关于无向图的基本操作有何目的与意义。 三、将以上的理解加以运用与操作。 第三章 需求分析 3.1 原理 本课题要求采取邻接表的存储结构。 邻接表是一种链式的存储结构, 在邻接表中, 对图中每个顶点建立一个单链表,第 i 个单链表中的结点表示依附于顶点 Vi 的边(对 有向图是以顶点 Vi 为尾的弧) 。每个结点由 3 个域组成,其中邻接点域(adjvex)指 示与顶点 Vi 邻接的点在图中的位置,链域(nextarc)指示下一条边或弧的结点;数 据域(info)存储和边或弧相关的信息,如权值等。 所以一开始必须先定义邻接表的边结点类型以及邻接表类型,并对邻接表进行初 始化,然后根据所输入的相关信息,包括图的顶点数、边数、是否为有向,以及各条 边的起点与终点序号,建立图的邻接表。此时要分两种情况:有向图与无向图。对于 无向图,一条边的两的个顶点,互为邻接点,所以在存储时,应向起点的单链表表头 插入一边结点,即终点。同时将终点的单链表表头插入一边结点,即起点。对于有向 图,只能向起点的单链表的表头插入一个边结点,即终点。但不能反过来。至于邻接 表的输出,由于不了解 C++中的绘图操作,故采用 for 语句输出各结点,并配合一些 符号完成邻接表的输出 当图比较稀疏时,邻接表存储是最佳的选择。并且在存储图的时候邻接表要比邻 接矩阵节省时间。在图存储在系统中后,我们有时还需要对图进行一些操作,如需要 添加一个顶点,修改一个顶点,或者删除一个顶点,而这些操作都需要图的深度优先 及广度优先遍历为基础。本系统将构建一个图,图的结点存储的是 int 型数据。运行
2
本系统可对该图进行链式结构输出、深度优先及广度优先遍历。 3.2 要求 (1)建立基于邻接表的图 (2)对图进行遍历 (3)输出遍历结果 3.3 系统总框架 系统的主要功能是用邻接表存储结构在图中对顶点进行插入、删除、修改操作, 并对图进行深度优先及广度优先遍历。总框架如下并对图进行深度优先及广度优先遍 历。总框架如下: 需要对无向图邻接矩阵建立请按 0 需要对无向图邻接矩阵输出请按 1 需要对无向图邻接表建立请按 2 需要对无向图邻接表输出请按 3 需要对无向图邻接表的深度遍历请按 4 需要对无向图邻接矩阵的深度遍历请按 5 需要对无向图邻接表的广度遍历请按 6 需要对无向图邻接矩阵的广度遍历请按 7