- 1、本文档共179页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 中南大学
一、 图的定义和术语 图(Graph)——图G是由两个集合V(G)和E(G)组成的,记为G=(V,E) 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对或有序对 有向图——有向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是有向边(也称弧)的有限集合,弧是顶点的有序对,记为v,w,v,w是顶点,v为弧尾,w为弧头 无向图——无向图G是由两个集合V(G)和E(G)组成的 其中:V(G)是顶点的非空有限集 E(G)是边的有限集合,边是顶点的无序对,记为(v,w)或(w,v),并且(v,w)=(w,v) 有向完全图——有n(n-1)条弧的n个顶点的有向图 无向完全图——有n(n-1)/2条边的n个顶点的无向图 稀疏图--若边或弧的个数 enlogn,则称作稀疏图,否则称稠密图。 权—把图的边或弧赋予一个有意义的数,此数叫权 带权图-网—弧或边带权的图分别称作有向网或无向网。 子图——如果图G(V,E)和图G’(V’,E’),满足: V’?V 且 E’?E, 则称G’为G的子图 邻接点—若无向图G中存在(V,W),则称V,W互为~; 边(V,W)和顶点V,W相关联。 顶点的度 无向图中,顶点的度为与该顶点相连的边数 有向图中,顶点的度分成入度与出度 入度:以该顶点为弧头的弧的数目 出度:以该顶点为弧尾的弧的数目 证明: 图的练习:判断下列4种图形各属什么类型? 简单路径: 用两个数组分别存储顶点信息和顶点之间的关系信息(邻接矩阵—表示顶点间相邻关系的矩阵) 定义:设G=(V, E)是有n?1个顶点的图,G的邻接矩阵A(二维数组)是具有以下性质的n阶方阵: 邻接矩阵特点: 无向图的邻接矩阵对称,可压缩存储;有n个顶点的无向图需存储空间为n(n+1)/2 有向图邻接矩阵不一定对称;有n个顶点的有向图需存储空间为n2 无向图中顶点Vi的度TD(Vi)是邻接矩阵A中第i行元素之和 有向图中, 顶点Vi的出度是A中第i行元素之和 顶点Vi的入度是A中第i列元素之和 邻接表特点 无向图中顶点vi的度为第i个单链表中的结点数 有向图中 顶点vi的出度为第i个单链表中的结点个数 顶点vi的入度为整个单链表中邻接点域值是i的结点个数(以vi为弧头)。 练习: 求下图各顶点的出度、入度,图的邻接矩阵、邻接表和逆邻接表 讨论:邻接表与邻接矩阵有什么异同之处? 补充:建立有(无)向图的邻接表 图的邻接表是应用较多的一种存储结构。从邻接表的结构定义可见,建立邻接表的主要操作是在链表中插入一个结点,以下是输入无向图的顶点和边建立邻接表的算法步骤。 建立有(无)向图的邻接表(续) 建立邻接表的主要操作是在链表中插入一个结点,以下是输入有向图的顶点和弧建立邻接表的算法。 建立有(无)向图(网)的邻接表算法描述 void CreateGraph(MGraph G) {// 生成图G的存储结构-邻接表 cin G.vexnum G.arcnum G.kind; // 输入顶点数、边数和图类:1 for (i=0; iG.vexnum; ++i) { // 构造顶点数组: 2cin G.vertices[i].data; // 输入顶点G.vertices[i].firstarc = NULL; } // for, 初始化链表头指针为空 for (k=0; kG.arcnum; ++k) // 输入各边并构造邻接表: 3 { cin sv tv; // 输入一条边(弧)的始点和终点i = LocateVex(G, sv); j = LocateVex(G, tv); // 确定sv和tv //在G中位置,即顶点在G.vertices中的序号 建立有(无)向图(网)的邻接表算法描述(续) if (G.kind==UDG || G.kind==UDN) { // 对无向图或无向网尚需建立tv的邻接点:4 pj = new ArcNode; if (!pi) exit(-1); // 存储分配失败pj - adjvex = i; // 对边结点赋邻接点“位置”pj - weight = w; pj-info = p; //头插法,将sv结点插入到第j个单链表中, 插入链表G.vertices[j]
您可能关注的文档
- 电子类专业学生就业调查.pdf
- Eric读后感.doc
- 旅游饭店职业英语初级Lesson 2.doc
- 物流专业的职业规划.doc
- 水的电离和溶液PH第二课时.ppt
- 施工1110联络巷半永久风门安全技术措施.doc
- 1.31区域发展差异—东、中、西差异学习提纲.doc
- 施工现场总的安全制度.doc
- 2010年12月N1语法解析.pdf
- 我校的体育教学特色项目如何做大.doc
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)