• 图Graph


    存储结构:

    1、邻接矩阵存储

    typedef struct

    {

      char vex[MAXVEX];//顶点数

      int arc[MAXVEX][MAXVEX];//邻接矩阵

      int numVextexes,numEdges;//顶点数和边数

    }MGraph;

    边数相对节点较少时会浪费内存,因此可以使用链表实现

    2、邻接表

    此为边表

    typedef struct EdgeNode

    {

      int adjvex;//存储顶点对应的下标

      int weight;

      struct EdgeNode* next;//指向下一个邻接点

    }EdgeNode;

    此为顶点表

    typedef struct VertexNode

    {

      int data;//存储顶点信息

      EdgeNode *firstedge;//指向第一个以该顶点为顶点的弧结点

    }VertexNode[MAXVEX];

    此为图表

    typedef struct

    {

      VertexNode adjList;//顶点表节点

      int numVertex,numEdges;//顶点数和边数

    }GraphAdjList;

    邻接链表和逆邻接链表可以分别解决出度和入度的问题,但是不能同时考虑,因此引入十字链表。

    3、十字链表 (有向图)

    顶点表结构为: data firstin firstout

    边表结构为:tailvex headvex hlink tlink info

    firstin,firstout:分别指向以该节点为弧头和弧尾的弧结点

    tailvex:弧尾  headvex:弧头 hlink:指向弧头相同的下一条边 tlink:指向弧尾相同的下一条边

    首先将顶点结点和所有的弧结点全部写出,然后分别将指针指向相应的弧。

    注意,此处所有的指针都是指向弧的,与之前的相同。

  • 相关阅读:
    python
    js 对嵌套页面的父页面进行跳转
    HTML 添加空格
    python
    python
    python
    面向对象编程基础(进阶4)
    Python模块(进阶3)
    Python函数式编程(进阶2)
    python进阶介绍(进阶1)
  • 原文地址:https://www.cnblogs.com/jiangnanrain/p/4419106.html
Copyright © 2020-2023  润新知