一起talk C栗子吧(第四十三回:C语言实例--图)

各位看官们,大家好,上一回中咱们说的是哈夫曼编码的例子,这一回咱们说的例子是:图。闲话休提,

言归正转。让我们一起talk C栗子吧!

看官们,提到图,大家可能会想到各种藏宝图,哈哈。不过我们说的图不是藏宝图,它是一种用来存储数

据的数据结构。举个日常生活中的例子:春节回家时,要穿越几个省市才能到家,这时需要选择回家的路

线,于是把回家途中的的省市当作结点,从一个省市到另外一个省市路径当作线。这样就构成了一张回家

图。这么可能比较抽象,我们通过图形来说明,请看下图:

假如我们在城市A,家在城市F,从A到F的途中有城市B,C,D,E。其中两个点之间有连线的表示这两个

城市之间有火车。那么从图中可以看出:回家的路线有以下三种:

A-C-F        //经过城市少,回家路途最近

A-C-D-F      //从城市C到F的车票不好买,需要绕路到城市D,然后才能回家

A-B-E-F      //经过城市多,而且路途最远。这条路上都是高铁,虽然路途远,但是可能会快一些

大家,通过这个图,我想大家都明白了图这个抽象概念了吧。

接下来我们说说如果在代码中存储图。我们可以二维数组来存放图,二维数组的行数和列数为图中点的个

数,如果两个点A,B之间有路径,那么就把二维数组中A行B列的值设定为1;如果没有路径就设定为0。这

种存储图的二维数组叫作邻接矩阵。下面是刚才例子中图的邻接矩阵,为了方便观察,我把行列的名字使

用点的名字命名,而且值为0的地方没有写出来。

通过邻接矩阵可以方便地表示图,不过它也有一些缺点,大家看看上面的邻接矩阵图,图中有边的地方在

邻接矩阵中就有值,图中无边的地方在邻接矩阵中没有值,这样造成了邻接矩阵中有很多空白的地方。“这

么多的空白不去使用,真是浪费呀”,这位看官说的太对了呀,这就是邻接矩阵的缺点:它会浪费一定的存

储空间,而且当图中边数少的时候更加明显。

各位看官,关于图的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-20 16:43:26

一起talk C栗子吧(第四十三回:C语言实例--图)的相关文章

一起talk C栗子吧(第十三回:C语言实例--单链表二)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们,上一回中咱们说的是链表以及单链表顺序储存方式的例子,这一回咱们继续说单链表的例子,不 过这一回咱们说的是:单链表链式存储. 看官们单链表的链式存储,咱们在上一回已经说过,这里就不再多说了.这一回主要举例子,通过例子来 说明什么是单链表的链式存储. 通过对比单链表的顺序储存和链式存储,可以看出来. 顺序存储链表的优点:遍历链表方便,查找也方便. 顺序存

一起talk C栗子吧(第二回:C语言实例--判断闰年)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C语言实例吧! 看官们,上一回中咱们给小说做了个开头,这一回咱们正式说C例子,这回说的例子是:判断闰年. 看官们,闰年是什么?这个是地理天文方面的概念.如果不明白的话,自己百度去,哈哈.我也偷一把懒. 看官们,判断闰年的方法有两种: 如果某年能被4整除,但是不能被100整除,那么这一年就是闰年. 如果某年能被400整除,那么这一年就是闰年. 看官们看到整除肯定想到除法了

一起talk C栗子吧(第二十三回:C语言实例--队列二)

各位看官们,大家好,上一回中咱们说的是队列及其特点,并且通过例子来说明队列,这一回咱们继续说 队列,不过咱们说的是链式存储形式的队列,这与上一回中顺序存储形式的队列不一样.闲话休提,言归 正转.让我们一起talk C栗子吧! 在代码中通过链表来实现队列的链式存储.而且定义了一个头结点,头结点主要用来保存队列的头部和尾 部信息,以及队列的长度信息.我们对队列的操作,本质上是对链表进行操作,队列中的结点可以看作是 链表中的结点,对队列进行入列(EnQueue)和出列(DeQueue)的操作,可以看作

程序员的奋斗史(四十三)——大学断代史(七)——在实验室的日子与我的学业

文/温国兵 本篇文章讲讲我在实验室的日子及我的学业,以飨读者. 2011年8月,大一暑假.那时有一股参加实验室的浪潮,我也不例外,慌忙中投入了加入实验室的队伍.我们学院总共有6个实验室,名字都很高大上,但做的东西主要是Java Web和嵌入式.当初年少懵懂,在几位学长的推荐下,毫不犹豫地选择了A老师和B老师的实验室.我们3个同学一起去找实验室老师,老师跟我们谈了一番话,大意是说现在就业形势如此严峻,应该静下心来学点东西,把本领练到手,并且还要保证呆在实验室时间的连贯性.对此我们唯唯诺诺,就这样踏

NeHe OpenGL教程 第四十三课:FreeType库

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第四十三课:FreeType库 在OpenGL中使用FreeType库 使用FreeType库可以创建非常好看的反走样的字体,记住暴雪公司就是使用这个库的,就是那个做魔兽世界的.尝试一下吧,我只告诉你了基本的使用方式,你可以走的更远

QT开发(四十三)——SAX方式解析XML

QT开发(四十三)--SAX方式解析XML 一.SAX简介 SAX是Simple API for XML的简写,是一种解析XML文件的替代方法,不是由W3C官方所提出的标准,是一种事件驱动的XML API,接近于底层,速度较快,但不便于随机访问任意节点. SAX解析的核心是事件处理机制,具有占用内存少,效率高等特点. SAX采用事件机制的方式来解析XML文档.使用SAX解析器对XML文档进行解析时,SAX解析器根本不创建任何对象,只是在遇到XML文档的各种标签如文档开始.元素开始.文本.元素结束

【Unity 3D】学习笔记四十三:布料

布料 布料是特殊的组件,它可以变化成任意形状,比如说:随风飘的旗子,窗帘等 创建布料的方法有两种:创建布料对象,在游戏对象中添加布料组件.前者通过hierarchy视图中选择create--cloth即可,创建后,系统会自动将互动布料组件(interactive clothe)与布料渲染组件(cloth renderer)添加值该对象中.后者是在导航菜单中选component--physics--interactive cloth菜单项即可. 交互布料组件是由网格组成的布料,只要用于布料的逻辑判

马哥教育第四十一至四十三学习总结

第四十一天 cobbler1.安装包yum install cobbler dhcpsystemctl enable cobblerdsystemctl start cobblerdsystemctl enable tftp.socketsystemctl start tftp.socketsystemctl enable httpdsystemclt start httpd 2.根据cobbler check提示 1) vim /etc/cobbler/settings default_pas

Android项目实战(四十三):夜神模拟器

原文:Android项目实战(四十三):夜神模拟器 一.下载模拟器到电脑 夜神模拟器 二.环境配置 计算机--系统--高级系统设置--环境变量 PATH 里面加入夜神模拟器的安装目录下的bin文件 三.启动模拟器 四.运行cmd命令,cd到夜神安装目录(bin目录下) 命令: adb connect 127.0.0.1:62001 成功结果: 四.Android Studio 运行或调试 原文地址:https://www.cnblogs.com/lonelyxmas/p/8970439.html