• 图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:指向弧尾相同的下一条边

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

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

  • 相关阅读:
    .net类库里ListView的一个BUG
    获取lable的caption, 摘抄还未测试可用否
    (转) lua实现split的简易方法
    2. SharePoint Online 开发,请联系qq512800530。加好备注。(不要发站内信。。。)
    1. android
    开发人员应关注的20个jQuery网站/博客
    Temp
    彩票项目开发节项
    求android ble 解决方案!
    自己开发的工作流引擎
  • 原文地址:https://www.cnblogs.com/jiangnanrain/p/4419106.html
Copyright © 2020-2023  润新知