名称:图的两种存储方式--邻接矩阵和邻接表

/*
名称:图的两种存储方式–邻接矩阵和邻接表
说明:根据不同的用途,可以用不同的存储结构来描述图。
(1)对于临接矩阵来说,其相对简单些。但是一般来说其存储密度并不高, 对于无向图来说,如果不用
压缩存储,那么至少浪费了一般的空间。其空间复杂度为O(N2)(N为顶点的个数)。比较适合与存储稠密图。
它容易判断两个顶点之间是否有边。但判断一个顶点的出度和入度就较为复杂些,需要扫描一行或一列。

(2)、对于临接表来说,其存储结构相对临接表要复杂些。不仅包括边表,还有顶点表。一般适合于存储稀疏 图。
它比较容易找到顶点的出度,但是判断两个顶点是否右边则需要扫描一个顶点的所有边表。对于顶点的所有出度其也不太容易找到,需要扫描整个临接表。这个问题可以通过存储逆邻接表或者十字交叉表来解决。
*/

//邻接矩阵存储结构定义
typedef struct gragh
{
   VexType  Vex[MaxVertexNum];      //顶点表
    int Edge[MaxVertexNum][MaxVertexNum];       //临接矩阵、边表

    //int weigh;      //权值

    int vexnum,arcnum;      //图的当前的顶点数和弧树
}MGraph;



//边表结点
typedef struct ArcNode
{
    int adjvex;         //该弧所指向的顶点的位置
    struct ArcNode *next;       //指向下一条弧的指针

    //int info;         //网的边的权值
}ArcNode;

//顶点表结点
typedef struct VNode
{
    VexType vex;           //顶点信息(此处为字符类型)
    ArcNode * first;    //指向第一条依附该顶点的弧的指针

}VNode,AdjList[MaxVertexNum];   //结构体数组定义所有顶点表结点

//邻接表存储的图类型
typedef struct
{
    AdjList vertices;       //邻接表
    int vexnum,arcnum;      //图的顶点数和弧数
}ALGraph;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值