图的输入及其边的记录(邻接表)

来源:互联网 发布:it教育哪家好 编辑:程序博客网 时间:2024/06/06 16:49

特点

只需记录存在的边,相对于邻接矩阵,大大减少了空间的浪费
操作相对复杂
也可以用vector记录与每一个点相连的边

方法

定义一个结构体来记录每一条边:
记录下一条边
记录这一条边所指向的点
记录这条边的权值(如果需要)
另外开一个数组,记录以每一个点为起点的第一条边

代码

结构体

struct Bian{    int to,next;    int quan;//如果需要}bian[N];

加入

void add(int a,int b,int quanzhi){    w++;                      //记录的边+1     bian[w].to=b;             //记录边指向的点    bian[w].quan=quanzhi      //记录权值    bian[w].next=first[a];    //边的下一条就是以a为头的最新一条边     first[a]=w;               //更新first }

寻找

void find(int dian){    p=first[dian];    while(p!=-1)    {        cout<<bian[p].to<<" "<<bian[p].quan<<endl;        p=bian[p].next;    }}
原创粉丝点击