图G由顶点集V和边集E组成,记为G=(V,E)

图不可为空,一定有顶点集不为空

有向图:有向边(弧)的有限集合

无向图:无向边的有限集合

连通:顶点V到顶点V'有路径

连通分量:无向图中的极大连通子图(极大:1.顶点足够多;2.极大连通子图包含依附这些点的所有边)

强连通分量:有向图中的极大强连通子图

连通的生成树:包含图中的全部n个顶点,但只有n-1条边的极小连通子图

度:以该顶点为一个端点的边数目

入度(ID):以顶点为终点的有向边数目

出度(OD):以顶点为起点的有向边数目

图的存储结构

邻接矩阵(顺序存储)

顶点:用一维数组存储 边/弧:用二维数组存储

#define MaxVertexNum 100                    //顶点数目最大值
typedef char VertexType; //顶点的数据类型项,不同情况不一样
typedef int EdgeType; //整数表示权值或者连通性
typedef struct{
VertexType Vex[MaxVertexNum]; //顶点表
EdgeType [MaxVertexNum][MaxVertexNum]; //邻接矩阵
int vexnum,arcnum; //图的当前顶点数和弧数
}MGraph

邻接表:存储的无向图中查找顶点容易,但是修改边或者查询边需要遍历链表。

图的遍历

从图中某一顶点出发,访遍图中其余顶点,且使每一个顶点仅被访问一次。

BFS(广度优先遍历):类似于树的层序遍历算法

时间复杂度:

邻接表:每个顶点入队一次,O(|V|),对于每个顶点,搜索其邻接点,所以访问该顶点所有边,O(|E|),所以总时间复杂度O(|V|+|E|)。

邻接矩阵:每个顶点入队一次,O(|V|),对于每个顶点,搜索其邻接点,所以遍历矩阵,O(|V|),所以总时间复杂度O(|V|2|)。

DFS(深度优先遍历):类似于树的先序遍历算法。

邻接表:每个顶点入队一次,O(|V|),对于每个顶点,搜索其邻接点,所以访问该顶点所有边,O(|E|),所以总时间复杂度O(|V|+|E|)。

邻接矩阵:每个顶点入队一次,O(|V|),对于每个顶点,搜索其邻接点,所以遍历矩阵,O(|V|),所以总时间复杂度O(|V|2|)。

总结

c语言数据结构学习心得——图的更多相关文章

  1. c语言数据结构学习心得——数据结构基本概念

    1.数据>数据元素>数据项      数据的基本单位是数据元素,数据元素的基本单位是数据项 2.运算的定义->针对逻辑结构 集合:同属于一个集合,无其他关系.(数学上的集合) 线性结 ...

  2. c语言数据结构学习心得——二叉树

    二叉树 n(n>=0)个结点的有限集合:(五种形态) 1.或者为空二叉树,n=0: 2.或者由一个根结点和两个互不相交的被称为根的左子树和右子树组成.左子树和右子树又分别是一棵二叉树. 3.每个 ...

  3. c语言数据结构学习心得——排序

    排序:将无序的序列重新排列为有序的序列. 插入类排序 插入类排序:在一个有序的序列中,插入一个新的关键字,知道所有的关键字都插入形成一个有序的序列. 直接插入排序:首先以一个元素为有序的序列,然后将后 ...

  4. c语言数据结构学习心得——查找

    顺序查找(线性查找) 主要用于在线性表中的查找 int Search1(int a[],int n,int key){ ;i<=n;i++){ //注意从1开始 if(a[i]==key)ret ...

  5. c语言数据结构学习心得——树

    树 一对多的树型结构,有且只有一个特定的根结点. 结点的度:结点拥有子树的数量{ 度为0:叶子结点/终端结点. 度不为0:非终端结点/分支结点(除去根结点其它称为内部结点).} 树的度:树中所有结点的 ...

  6. c语言数据结构学习心得——队列

    队列 只允许在一端进行插入,在另一端进行删除的线性表 队头(Front):允许删除的一端(队首) 队尾(Rear):允许插入的一端 FIFO:先进先出 不要求从数组首位开始存储队列 #define M ...

  7. c语言数据结构学习心得——栈

    栈(Stack) 只允许在一端进行插入或删除操作的线性表 栈顶(Top):栈中允许进行插入和删除操作的那一端: 栈底(Bottom):固定的,不允许进行插入或删除的另一端 1.栈是受限的线性表,所以自 ...

  8. c语言数据结构学习心得——线性表

    线性表:具有相同数据类型的n(n>0)个数据元素的有限序列. 主要有顺序存储和链式存储. 顺序存储: 特点:地址连续,随机/存取,顺序存储. 建立:首地址/存储空间大小(数组),表长. 方式:静 ...

  9. 获奖感言和C语言的学习心得

    获奖感言和C语言的学习心得 自我介绍: 大家好,我的名字叫袁忠,我来自湖南,今年快19岁了,现在是大学一年级,我平时喜欢跑步.打羽毛球,我也喜欢学算法与数学,以及喜欢看一些与计算机有关的书籍,每次我学 ...

随机推荐

  1. python:if 语句的使用方法

    if-else类型: #if-else num = int(input("输入成绩!")) if num > 60: print ("及格") else: ...

  2. OpenGL3.x,4.x中使用FreeImage显示图片的BUG-黑色,或颜色分量顺序错乱

    //参照FreeImage官网给出的CTextrueManager写的加载函数 //官方给的例子是用opengl3.0以下的旧GL写的,没有使用glGenerateMipmap(GL_TEXTURE_ ...

  3. python实现文件下载的方法总结

    前端时间遇到一个通过url下载文件的需求,只需要简单的编写一个py脚本即可.从网上搜了下python实现文件下载的方法,总结如下,备查. 以下方法均已测试,环境win8.1  python2.6/2. ...

  4. 如何上传网站程序(文件浏览器上传网页、FileZilla上传网站程序)

    问题场景: 网页制作完成后,程序需上传至虚拟主机. 注意事项: Windows系统的主机请将全部网页文件直接上传到FTP根目录,即 / . Linux系统的主机请将全部网页文件直接上传到 /htdoc ...

  5. 03.WSDL分析

    自己做一个程序放到tomcat里面这个就是服务,自己安装一个oracle,oracle启动之后那它本身就是一种服务. WebService就是HTTP,那么它和HTTP有什么不同呢? HTTP GET ...

  6. SaeMysql操作示例

    新浪sae的官方说明文档:http://apidoc.sinaapp.com/sae/SaeMysql.html Class SaeMysql 具体实现:http://apidoc.sinaapp.c ...

  7. 268. Missing Number序列中遗失的数字

    [抄题]: Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is ...

  8. 29.MAX() 函数

    MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 SELECT MAX(column_name) FROM table_name 注释:MIN ...

  9. GridSearchCV scoring 参考

    http://scikit-learn.org/stable/modules/model_evaluation.html Scoring parameter: Model-evaluation too ...

  10. poj1722 SUBTRACT

    应该是基础的dp练手题 线性dp最主要的就是关于阶段的划分,这个题中我没想到的一点就是开状态的时候使用了前i个数能合成的数来记录 我自己的想法就是类似于区间dp这样的记录方法,这种方法确实开了很多冗余 ...