图的基本概念

图的定义

图是一种非线性结构,其中的元素是多对多的关系。

图是由非空的顶点的集合和描述顶点关系即边的集合组成。

图的特征

图的基本术语

  • 有向图:边是有方向的图
  • 无向图:边是无方向的图

图的存储结构

图的连接矩阵

  1. #define MAXVEX 100
  2. typedef char VertexType[3]; /*定义VertexType为char数组类型*/
  3. typedef struct vertex
  4. {
  5. int adjvex; /*顶点编号*/
  6. VertexType data; /*顶点的信息*/
  7. } VType; /*顶点类型*/
  8. typedef struct graph
  9. {
  10. int n,e; /*n为实际顶点数,e为实际边数*/
  11. VType vexs[MAXVEX]; /*顶点集合*/
  12. int edges[MAXVEX][MAXVEX]; /*边的集合*/
  13. } AdjMatix; /*图的邻接矩阵类型*/

图的连接表

  1. #define MAXVEX 100
  2. typedef char VertexType[3];
  3. typedef struct edgenode
  4. {
  5. int adjvex; /*邻接点序号*/
  6. int value; /*边的权值*/
  7. struct edgenode *next; /*下一条边的顶点*/
  8. } ArcNode; /*每个顶点建立的单链表中结点的类型*/
  9. typedef struct vexnode
  10. {
  11. VertexType data; /*结点信息*/
  12. ArcNode *firstarc; /*指向第一条边结点*/
  13. } VHeadNode; /*单链表的头结点类型*/
  14. typedef struct
  15. {
  16. int n,e; /*n为实际顶点数,e为实际边数*/
  17. VHeadNode adjlist[MAXVEX]; /*单链表头结点数组*/
  18. } AdjList; /*图的邻接表类型*/

图的遍历

广度优先搜索

深度优先搜索