图的存储结构

1.图的邻接矩阵存储结构

#define MaxVertexNum 100  //顶点最大数目
typedef char VertexType   //顶点的数据类型
typedef int EdgeType      //带权图中边上权值的数据类型
typedef struct{
    VertexType Vex[MaxVertexNum]; //顶点表
    EdgeType Edge[MaxVertexNum][MaxVertexNum];  //边表
    int vexnum,arcnum;  //当前顶点和弧数
}

2.图的邻接表存储结构

#define MaxVertexNum 100  //顶点最大数目
typedef char VertexType   //顶点的数据类型
typedef int EdgeType      //带权图中边上权值的数据类型
typedef struct ArcNode{
    int adjvex;//弧所指向的顶点的位置
    struct ArcNode *next;
}ArcNode;

typedef struct VNode{
    VertexType data;//顶点信息
    ArcNode *first;//指向第一条依附该顶点的弧的指针
}VNode,AdjList[MaxVertexNum];

typedef struct{
    AdjList vertices;//邻接表
    int vexnum,arcnum;//图的顶点数和弧数
}ALGraph;//以邻接表存储的图的类型

3.十字链表

#define MaxVertexNum 100
typedef struct ArcNode{
    int tailvex,headvex;//弧的头尾结点
    struct ArcNode *hlink,*tlink;//指向弧头相同和弧尾相同的结点
    //InfoType info;
}ArcNode;

typedef struct VNode{    //顶点表结点
    VertexType data;//顶点信息
    ArcNode *firstin,*firstout;//指向第一条入弧和出弧
}VNode;

typedef struct {
    VNode xlist[MaxVertexNum];//邻接表
    int vernum,arcnum;//图的顶点数和弧数
}GLGraph;//

4.邻接多重表

#define MaxVertexNum 100
typedef struct ArcNode{
    bool mark;//访问标记
    int ivex,jvex;//分别指向该弧的两个结点
    struct ArcNode *ilink,*jlink;//分别指向两个顶点的下一条边
    //InfoType info;//相关信息指针
}ArcNode;

typedef struct VNode{    //顶点表结点
    VertexType data;//顶点信息
    ArcNode *firstEdge;//指向第一条入依附该顶点的边
}VNode;

typedef struct {
    VNode adjmulist[MaxVertexNum];//邻接表
    int vernum,arcnum;//图的顶点数和弧数
}AMLGraph;//

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值