目录

  • 1 课程资料
    • 1.1 课程标准
    • 1.2 教学日历
    • 1.3 说课课件
  • 2 第一章绪论
    • 2.1 本章教学目标
    • 2.2 数据结构简介
    • 2.3 数据结构类型
    • 2.4 算法分析
    • 2.5 本章讲义
    • 2.6 本章测验题
    • 2.7 测验
  • 3 线性结构
    • 3.1 本章教学目标
    • 3.2 线性表
    • 3.3 线性表的顺序存储及运算实现
      • 3.3.1 本节讲义
    • 3.4 线性表的链式存储和 运算实现
      • 3.4.1 本节讲义
    • 3.5 应用
    • 3.6 数组
      • 3.6.1 讲义
    • 3.7 本章测验题
    • 3.8 测验
    • 3.9 作业
  • 4 第三章栈和队列
    • 4.1 本章教学目标
    • 4.2 第一课时栈
      • 4.2.1 讲义
    • 4.3 第二课时队列
      • 4.3.1 讲义
    • 4.4 应用
      • 4.4.1 讲义
    • 4.5 本章测验题
  • 5 第四章串
    • 5.1 第一课时概念
    • 5.2 本章学习目标
    • 5.3 本章测验题
  • 6 第五章树和二叉树
    • 6.1 本章学习目标
    • 6.2 第一课时树的定义及基本术语
    • 6.3 第二课时二叉树定义性质存储
    • 6.4 第三课时二叉树遍历
    • 6.5 第四二叉排序与平衡二叉树
    • 6.6 第五树森林二叉树之间转换
    • 6.7 第六课时哈夫曼树
    • 6.8 本章测验题
    • 6.9 测验
    • 6.10 作业
  • 7 第六章图
    • 7.1 本章学习目标
    • 7.2 第一课时图的基本概念
    • 7.3 第二课时图的存储
    • 7.4 第三课时图的遍历
    • 7.5 第四课时最小生成树
    • 7.6 第五课时最短路径
    • 7.7 第六课时拓扑排序
    • 7.8 第七课时关键路程
    • 7.9 本章测验题
    • 7.10 测验
    • 7.11 作业
  • 8 第七章查找
    • 8.1 本章学习目标
    • 8.2 第一课时顺序查找二分查找
    • 8.3 第二课时哈希表
    • 8.4 本章测验题
    • 8.5 测验
    • 8.6 作业
  • 9 第八章排序
    • 9.1 本章学习目标
    • 9.2 第一课时基本概念
    • 9.3 第二课时插入选择排序
    • 9.4 第三课时交换排序
    • 9.5 第四课时归并 基排序及比较
    • 9.6 本章测验题
    • 9.7 测验
    • 9.8 作业
第一课时图的基本概念

重点:图的基本概念

难点:图的存储结构


一图的结构定义:

图是由一个顶点集 V 和一个弧集 R构成的数据结构。

        Graph = (V , R )

其中,VR{<v,w>| v,wV  P(v,w)}

   <v,w>表示从 v  w 的一条弧,并称 v 弧尾w 弧头

 谓词 P(v,w) 定义了弧 <v,w>的意义或信息

6.1.2  有关图的常用术语

1.顶点的度、入度、出度 

无向图中,若顶点vivj之间有一条边(vivj)存在,则表明顶点vivj互为邻接点,简称vivj相邻接。所谓顶点vi的“度”,是指与它相邻接的顶点的个数,记为D(vi)

2邻接点

对于无向图G(V{E}),如果边(v1v2)∈E,则称顶点v1v2互为邻接点,即v1v2相邻接。边(v1v2)依附于顶点v1v2 ,或者说边(v1v2)与顶点v1v2相关联。 

3.路径、路径长度

在无向图G中,所谓从顶点vi到顶点vj的一条“路径”,是指在顶点vi与顶点vj之间存在有一个边的序列:

vi, vi1),(vi1, vi2),…,(vim,vj

    其中顶点vivi1vi2、…、vimvj属于G的顶点集合V,边(vi, vi1)、(vi1,vi2)、…、(vim, vj)属于G的边的集合E

4.简单路径、回路

在图G(VE)中,如果有结点序列:

 VpVi1Vi2VinVq ,使得{ (Vp Vi1)(Vi1 Vi2)(VinVq) }E(若对有向图,则存在一系列弧)则称从结点Vp到结点Vq存在一条路径,路径长度就为这条路径上的边数。如果一条路径上的结点除VpVq可以相同外,其它结点都不相同,则称此路径为一简单路径。

5.无向完全图、有向完全图

若一个有n个顶点的无向图,拥有n(n1)/2条边,那么就称该图为“无向完全图”。对于一个无向完全图来说,它的每个不同顶点对之间,都存在有一条边。 若一个有n个顶点的有向图,拥有n(n1)条弧,那么就称该图为“有向完全图”。

对于一个有向完全图来说,它的每个不同顶点对之间,都存在有两条弧。

6.子图

已知两个图G=VE),G=V′,E′)。若有V′是V的子集,E′是E的子集,且E′中的边(或弧)都依附于V′中的顶点,那么就称G′是G的一个“子图”。

7.连通、连通图、连通分量

在无向图中,若从顶点vi到顶点vj之间有路径存在,则称vivj是“连通”的。如果无向图G中任意一对顶点之间都是连通的,则称该图G为“连通图”,否则是非连通图。

8.边的权、网络

有时,可以给图的边或弧依附上某种数值,这种与图的边或弧相关的数值被称为“权”。边或弧上带有权的图称为“网图”或“网络”。

9.生成树:n个顶点的连通图的生成树是一个极小连通子图,它包含连通图的全部顶点及n-1条边,使所有顶点都连通但不构成回路。生成树具有两个特点:

1n个顶点的生成树包含n-1条边;

2)如果在生成树中任意增加一条边,则有一条回路。

 

 


6.2.1 邻接矩阵

所谓邻接矩阵,是表示顶点之间相邻关系的矩阵,是指一种存储结构的组合。 

用一个一维数组存储图中顶点的数据信息;用一个二维数组(即矩阵)存储图中各顶点间的邻接关系。通常,简略地只是把这个组合中的二维数组称作是图的邻接矩阵

6.2.2 邻接表

邻接表表示图是由两部分构成,即顶点数据表和表示数据关系的边(弧)构成的表:

  ⑴ 顶点数据表:由所有顶点数据信息以顺序结构的向量表形式存储,一个表目对应于图的一个结点,每个表目包括两个部分,其一是表示数据的,可以是数据或指向结点数据的指针(data);另一个是表示边(弧)的指针,该指针(firstarc)指向相邻的第一条边(弧),通过这个指针便可以随机访问相邻的任一顶点。

6.2.3十字链表

十字链表(Orthogonal List)是有向图的另一种链式存储结构。我们也可以把它看成是将有向图的邻接表和逆邻接表结合起来形成的一种链表。有向图中的每一条弧对应十字链表中的一个弧结点,同时有向图中的每个顶点在十字链表中对应有一个结点,叫做顶点结点。

6.2.4邻接多重表