数据结构与算法----邻接表

一些话

图的邻接存储的建立,也就是前面的一大堆东西,什么什么#define   以及 typedef这样的一些代码

但是这样还是需要一些前置的知识的,那就来处理处理

邻接矩阵是图的一种链式的存储方式,是由两种部分组成,表头结点表(就是那个前面的东西)  +  边表(可不就是后面连着的一条串串的东西)

邻接表     存储图

图的邻接表存储的表示

注意这里是有非常多的结构体的建立,一看就是比较烦人的,但是我们来细细的品味一下,注意!!!

这里仅仅只是邻接表的前置的东西,切记不可以混淆!!!

这里有顶点的结构体,也有边表的结构体,以及还有图的结构体定义


1.
typedef char VT;   //vertex_typedef
typedef int ET;     //edges_typedef


2.
//边表结构体       邻接Adjacency   顶点vertex  
struct EdgeNode{

    int adjacency_vertex;     //邻接顶点的下标位置,也可以理解为该边所指向顶点的位置
    ET weight;        //边的权值   如果是图,不是网,就可以忽略的
    
    struct EdgeNode *next;  //这里就是动态存储的方式,有一种感觉像是进行迭代的感觉
    //struct EdgeNode整个这个东西变成了类型的意思,这个在前半年的学过程中遇到过
    //这里注释为:下个边表的结构体,但是这样看更好一点,理解为指向下一条的指针!!!
    
};

3.顶点结构体 (顶点的结点结构)
struct VertexNode{
    VT data;        //顶点元素,也就是顶点的信息
    struct EdgeNode *firstedge;
};

4.边的数据结构---使用下标定位
struct Edge{
    int ivex;  //顶点  下标
    int jvex;  //顶点  下标
    ET weight; //边的权值
};

5.边的数据结构---使用数字 元素定位方法
因为只会告诉你这个下标的值,因为你笨来就是不知道在那里的
struct Path{
    VT bvex;      //顶点的元素
    VT evex;    //顶点的元素
    ET weight;  //边的权值
};

6.图的数据结构
struct AdjGraph{

    int edgenum;    //边的数量

    int vexnum;        //顶点的数量

    bool is_there_direction;    //判断是否是有向图

    struct VertexNode vertexs[];  //顶点集合,使用了动态存储的方式,如下
                                   //顶点结构体 (顶点的结点结构)struct VertexNode{
                                    //定义一个vertexs数组,是vertex的复数形式
};

typedef struct AdjGraph *AG;  //看不惯你的操作,我直接重新起名字,也变成了类型的一个代号


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值