第六章——图

本章学习了有关图的概念以及基本操作。

主要学习了邻接矩阵,邻接表,深度搜索以及广度搜索。

其中,邻接矩阵构造简单,方便操作,易于判断两个顶点间是否存在边,即通过A[i][j]=0/1。但是数据量大时,会浪费大量空间,且不利于增删顶点。而领接表方便增删顶点,只需修改指针即可,而且空间利用效率更高,解决了系数矩阵的问题,但是不方便判断两顶点间是否有边的存在。

有关图的术语:

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

2、极小生成树:权值最小的生成树。

有关邻接矩阵和邻接表的存储:

1、邻接矩阵:

#define MVNum 100         //最大顶点数
typedef char VerTexType;  //顶点的数据类型
typedef int ArcType;         //边的权值类型
typedef struct {
    VerTexType vexs [MVNum]; //顶点表(一维数组)
    ArcType arcs [MVNum] [MUNum];  //邻接矩阵
    int vexnum, arcnum;     //顶点数及边数
} AMGraph;

邻接矩阵

2、

typedef struct ArcNode   //
{
    int adjvex;        //该边指向顶点的位置
    struct ArcNode *nextarc;  //下一条边的指针
    quanzhi info;  //边权值
} ArcNode;

typedef struct VNode  //顶点信息
{
   VerTexType data;
   ArcNode *fiestarc   //第一条指该定点的边的指针
}VNode, AdjList [MVNum];  

typedef struct
{
  AdjList verices;
  int vexnum,arcnum; //顶点数 边数
}ALGraph;

邻接表

广度优先遍历:

广度优先遍历,又称为广度优先搜索,简称BFS。图的广度优先遍历就类似于树的层序遍历了。

代码如下:

//广度优先遍历
void BFS(AGraph* G,int v) {
    ANode *p;
    queue<int> qu;
    vector<int> flag(G->n);
    int w;
    cout<<v<<" ";
    flag[v]=1;
    qu.push(v);
    while(!qu.empty()) {
        w = qu.front();
        qu.pop();
        p = G->adjlist[w]->firstarc;
        while(p) {
            if(!flag[p->adjvex]) {
                cout<<p->adjvex<<" ";
                flag[p->adjvex] = 1;
                qu.push(p->adjvex);
            }
            p = p->nextarc;
        }
    }
    cout<<endl;
}

广

原文地址:https://www.cnblogs.com/chenjianyuan/p/10891308.html

时间: 2024-12-13 06:34:56

第六章——图的相关文章

数据结构——第六章 图

图是由顶点集V和顶点间的关系集合E(边的集合)组成的一种数据结构.可以用二元组定义为:G=(V,E) 1. 有向图和无向图: 若用箭头表明了边是有方向性的,则称这样的图为有向图. 否则称为无向图. 2.完全图.稠密图.稀疏图 具有n个顶点,n(n-1)/2条边的图,被称为完全无向图,具有n个顶点,n(n-1)条弧的有向图, 称为完全有向图,完全无向图和完全有向图都称为完全图. 3.度,入度,出度 在图中,一个顶点依附的边或弧的数目,称为该顶点的度. 对有向图来说,进入或出去...的个数被称为入度

Blog 5.第六章 图的认识

一.图的存储结构 图的数组(邻接矩阵)存储表示: 优点:1/0表示方便 缺点:不利于增加删除顶点 特殊:时间复杂度较高,不稀疏图:不过在无向图,可利用下三角形来压缩处理空间. 例子1: (需要辅助数组) 来源:https://www.cnblogs.com/XMU-hcq/p/6065057.html 例子2: (1/0替换成当下边的权值) 来源:https://blog.csdn.net/luoweifu/article/details/9270693 图的邻接表存储表示: 来源:https:

第六章&#160;图(b1)邻接矩阵

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/10258566.html

《数据结构》第六章 知识点结构导图

<数据结构>第六章 知识点结构导图

124第六章——在图形化界面下对磁盘进行常规管理 学习笔记

MBR:主引导扇区,在驱动器最前端的一段引导扇区,大小为512B(字节),由三部分组成,第一部分为主引导程序(boot loader),大小为446B,第二部分为分区表(partition table区),大小为64B,第三部分为magic number,大小为2B,固定为55AA.因为在分区表上记录一个主分区需要使用16B,所以整个硬盘的主分区和扩展分区最多只能是4个,不过在扩展分区上可以创建逻辑分区.Windows的系统文件必选安装在主分区上. 应用程序→系统工具→磁盘实用工具 124第六章

ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第六章:管理产品图片:多对多关系(上)

这章介绍了怎样创建一个新的实体来管理图片,怎样使用HTML窗体来上传图片文件和使用多对多关系来使它们与产品相关,并且怎样来保存图片到文件系统中.这章也介绍了更多复杂的错误处理增加客户端错误到模型中为了把它们显示回给用户.在这章中播种数据库使用的产品图片可能在在第六章的从Apress网页站点下载代码中. 注意:如果你想遵从这章的代码,你必须完成第五章的代码或者从www.apress.com下载第五章的源代码作为一个起点. 创建实体保存图片文件名 这个项目,我们正要使用文件系统在Web项目中存储图片

Linux与云计算——第二阶段Linux服务器架设 第六章:目录Directory服务器架设—FreeIPA

Linux与云计算--第二阶段Linux服务器架设 第六章:目录Directory服务器架设-FreeIPA 1 FreeIPA 配置FreeIPA服务器 Configure IPA Server to share users' account in your local network. [1] Install FreeIPA. [[email protected] ~]# yum -y install ipa-server ipa-server-dns bind bind-dyndb-lda

大道至简——第六章

接着阅读大道至简,就从题目来说作者或许又将向我们讲述自己的真实经历,这些看似平常但对于我们这些菜鸟来说应该是非常珍贵的资料,这将引领我们在软件工程这一途上认知得更多,积累更多的经验,也就意味着在今后的职业生涯中更加的有竞争力,这些似乎都是我们应该感谢作者的强大的.这也是我为什么一直感到作者写的这本书对于我们很有作用的原因之一. 第六章,章节是从编程到工程,这就是一个过程,而工程都是和过程的共生的,这样来看便没有任何的违和.第一个小节作者说语言只是工具,很难想象就是这样的作者在几年前还是在熟悉了高

《Entity Framework 6 Recipes》中文翻译系列 (30) ------ 第六章 继承与建模高级应用之多对多关联

翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第六章  继承与建模高级应用 现在,你应该对实体框架中基本的建模有了一定的了解,本章将帮助你解决许多常见的.复杂的建模问题,并解决你可能在现实中遇到的建模问题. 本章以多对多关系开始,这个类型的关系,无论是在现存系统还是新项目的建模中都非常普遍.接下来,我们会了解自引用关系,并探索获取嵌套对象图的各种策略.最后,本章以继承的高级建模和实体条件结束. 6-1  获取多对多关联中的链接表 问题