数据结构笔记——图的存储之邻接表法

目录

一、邻接表法(顺序+链式存储)

二、邻接表法

三、邻接表和邻接矩阵的区别

一、邻接表法(顺序+链式存储)

//用邻接表存储的图
typedef struct{
    AdjList vertices;
    int vexnum,arcnum;
}ALGraph;

//"顶点"
typedef struct VNode{
    VertexType data;    //顶点信息
    ArcNode *first;    //第一条边/弧
}VNode,AdjList[MaxVertexNum];

//边/弧
typedef struct ArcNode{
    int adjvex;    //边/弧指向哪个结点
    struct ArcNode *next;    //指向下一条弧的指针
    //InfoType info;    //边权值
}

对比:树的孩子表示法

孩子表示法:顺序存储各个节点,每个结点中保存孩子链表头指针

二、邻接表法

边结点的数量是2|E|,整体空间复杂度为O(|V| + 2|E|)

边结点的数量是|E|,整体空间复杂度为O(|V| + |E|)

注:图的邻接表表示方式不唯一

注:只要确定了顶点编号,图的邻接矩阵表示方式唯一

三、邻接表和邻接矩阵的区别

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章