图的表示

图的表示方法有邻接表和邻接矩阵。

邻接矩阵,实现方法是二维数组;

邻接表,实现方法是链表。

下面主要写出邻接表的代码实现方法:

边的定义:

struct Edges{
    int v;
    Edges *next;
}*head[N], edge[M];

头指针的初始化:

memset( head, 0, sizeof(head));
cnt = 1; //边的标号

加边函数:

void add ( int u, int v )
{
  edge[cnt].v = v; edge[cnt].next = head[u]; head[u] = &edge[cnt++];    //这里要注意给head[u]赋值的时候,edge那个结点前要加地址符&,head数组的类型是指针变量
}

for循环搜索一个点所连接的其他的点,或者搜索一个点的关联边:

for ( Edges *i = head[u]; i; i = i->next )
    {
        int v = i->v;        //这里要说明的是i就是这个要遍历的结点

  

追求卓越,成功就会不期而至……
原文地址:https://www.cnblogs.com/Aclion/p/3667370.html