0
点赞
收藏
分享

微信扫一扫

数据结构基础:P6.1-图(一)--->什么是图

本系列文章为浙江大学陈越、何钦铭数据结构学习笔记,前面的系列文章链接如下
数据结构基础:P1-基本概念
数据结构基础:P2.1-线性结构—>线性表
数据结构基础:P2.2-线性结构—>堆栈
数据结构基础:P2.3-线性结构—>队列
数据结构基础:P2.4-线性结构—>应用实例:多项式加法运算
数据结构基础:P2.5-线性结构—>应用实例:多项式乘法与加法运算-C实现
数据结构基础:P3.1-树(一)—>树与树的表示
数据结构基础:P3.2-树(一)—>二叉树及存储结构
数据结构基础:P3.3-树(一)—>二叉树的遍历
数据结构基础:P3.4-树(一)—>小白专场:树的同构-C语言实现
数据结构基础:P4.1-树(二)—>二叉搜索树
数据结构基础:P4.2-树(二)—>二叉平衡树
数据结构基础:P4.3-树(二)—>小白专场:是否同一棵二叉搜索树-C实现
数据结构基础:P4.4-树(二)—>线性结构之习题选讲:逆转链表
数据结构基础:P5.1-树(三)—>堆
数据结构基础:P5.2-树(三)—>哈夫曼树与哈夫曼编码
数据结构基础:P5.3-树(三)—>集合及运算
数据结构基础:P5.4-树(三)—>入门专场:堆中的路径
数据结构基础:P5.5-树(三)—>入门专场:File Transfer

文章目录


一、定义

1.1 图的一些应用

图这个词在数据结构第1篇博客中就提到过。就是在那个书店里,如果我们除了想摆书之外,还想统计一下每一本书有什么人买,买这些书的人还买过其他的什么书。这时我们就需要建立一种多对多的关系,这种工具叫做图。

社交网络


最短路径与最小生成树


1.2 图的定义

我们说过图表示的是一种多对多的关系,之所以我们说它强大是因为它把线性表和树全部都包含在内了。我们知道线性关系表示的是一对一的关系,而树表示的是一对多的关系。其实线性表和树全部都可以认为是图的一个特殊情况。

当我们要描述一个图的时候,有两件事情一定要搞清楚:什么是它的顶点和边。


1.3 数据类型与术语

按照惯例,我们在介绍一个结构的时候肯定是先从它的抽象数据类型定义开始。抽象数据类型定义包括三个要素:类型名称、数据对象集、操作集


图的相关术语有很多,我们先介绍几个常见的。


二、邻接矩阵表示法

前面我们说了一些抽象的图的概念,接下来我们要写程序去实现这些图的相关算法。我们怎么在程序里头表示一个图?我们先看第一种最简单的表示方法:邻接矩阵表示法


对于一个无向图的存储邻接矩阵,显然有一半的空间是被浪费掉的。


邻接矩阵表示图的好处:

邻接矩阵表示图的缺点:


三、邻接表表示法

在前面我们知道了邻接矩阵在表示稀疏图的时候是很不方便的,它不仅浪费空间而且浪费时间为了解决这个问题,我们就有了另外一种表示法,叫做邻接表。邻接表是一个链表的集合,我们首先定义一个指针数组G[N],对应矩阵每行一个链表,只存非0元素。


分析:


邻接表的优缺点:


四、小测验

1、有个顶点的无向完全图有多少条边?

A. N(N-1)/2
B. N(N+1)/2
C. N^2
D. N^2-N

答案:A

2、给定有向图的邻接矩阵如下
在这里插入图片描述
顶点2(编号从0开始)的出度和入度分别是:

A. 3, 1
B. 1, 3
C. 0, 2
D. 2, 0

答案:C

3、有向图的邻接矩阵一定是不对称的
答案:错误

4、用一维数组G[ ]存储有4个顶点的无向图如下:

G[ ] = { 0, 1, 0, 1, 1, 0, 0, 0, 1, 0 }
则顶点2和顶点0之间是有边的。

答案:正确

5、用邻接表表示有个N顶点、E条边的图,则遍历图中所有边的时间复杂度为:

答案:C

举报

相关推荐

0 条评论