• 图的基本概念
    • 图的定义
    • 图的特征
    • 图的基本术语
    • 图的存储结构
      • 图的连接矩阵
      • 图的连接表
    • 图的遍历
      • 广度优先搜索
      • 深度优先搜索

    图的基本概念

    图的定义

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

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

    图的特征

    图的基本术语

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

    图的存储结构

    图的连接矩阵

    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; /*图的邻接表类型*/

    图的遍历

    广度优先搜索

    深度优先搜索