一.序 邻接表是邻接矩阵的改进。当图中的边数少于顶点个数时,邻接矩阵中会出现大量的零元素,如果这些零元素,将消耗大量的内存。为此,可以把邻接矩阵的n行改为n个链表,把同一个顶点出发的边链接到同一个称之为边链表的单链表中,单链表的每个结点代表一条边,叫做边结点,结点中保存有与该边相关联的另一顶点的顶点下标dest和指向同一链表中下一边结点的指针link.如果带权图时,结点中还要保存改边上的权值cost.顶点i的出边表的表头指针adj在顶点表的下标为i的顶点记录中,该记录还保存了该顶点的其他信息。 二.模型 三.实现 源码请戳https://github.com/zhangzhuo233/Data_Structure/tree/master/Graph
测试代码
/*Test.cpp**2016.2.16*/#include"GraphLink.h"#include<vld.h>int main(){ GraphLink<char> gl; gl.ShowGraph(); gl.InsertVertex('A'); gl.InsertVertex('B'); gl.InsertVertex('C'); gl.InsertVertex('D'); gl.ShowGraph(); gl.InsertEdge('A', 'B'); gl.InsertEdge('A', 'C'); gl.InsertEdge('B', 'D'); gl.ShowGraph(); cout<<gl.GetFirstNeighbor('A')<<endl; cout<<gl.GetNextNeighbor('A', 'B')<<endl; gl.RemoveVertex('A'); gl.RemoveVertex('B'); gl.RemoveVertex('C'); gl.RemoveVertex('D'); gl.ShowGraph();}新闻热点
疑难解答