图的定义
- 简单图:无自环和重边,对于简单完全图来说|E|的取值0 到n(n-1)/2 ,有向图是0到n(n - 1)
- 子图:如果Va是Vb的子集且Ea是Eb的子集则称Ga是Gb的子图
- 连通、连通图和连通分量:无向图中任意两点都是连通为连通图,极大连通子图称为连通分量
- 强连通分量、强连通分量,在有向图中任意两点都是连通为强连通图、极大连通子图称为强连通分量
- 生成树、生成森林:它是指一个包含图中所有顶点的树(无环连通子图)
- 简单路径、简单回路:在路径序列中,顶点不重复出现的路径称为简单路径,除最后一顶点和最后一顶点外其余顶点不重复出现的回路称为简单回路
图的存储
十字链表
十字链表是有向图的一种链式存储结构,有向图的每条弧用一个结点来表示。
弧结点有5个域:headvex和 tailvex两个域分别指向弧头和弧尾;hlink指向弧头相同的下一个弧结点,tlink指向弧尾相同的下一个弧结点
顶点结点有3个域:data域存放该顶点的数据信息,firstin指向以该顶点为弧头的第一个弧结点,firstout指向以该顶点为弧尾的第一个弧结点
在十字链表中,即容易找到Vi为尾的弧也容易找到以Vi为头的弧,容易求度
邻接多重表
顶点结点 :data顶点数据域、firstedge:边表节点的头指针
弧结点:ivex:该边的第一个端点 、ilink:与该端点相邻的下一个边表节点的指针、jvex:该边的第二个端点、jlink:与该端点相邻的下一个边表节点的指针、info:权值