数据结构--无向图的邻接多重表存储结构

无向图的邻接多重表已经在之前一篇文章里介绍了:传送门

下面我进一步地来介绍如何实现无向图的初始化,深度优先搜索DFS,广度优先搜索BFS,深度优先搜索的非递归算法

1.无向图的初始化:

//建立顶点表 
void AddVex(OLGraph *G)
{
    int i;
    for(i=0;i<G->vexnum;i++)
    {
        G->xlist[i].data=i;
        G->xlist[i].firstout=NULL;
    }
}
//给点v1和点v2建立一条权重为cost的边 
void AddArc(OLGraph *G,int v1,int v2,int cost)
{
    ArcNode *pArc=new ArcNode;
    pArc->headvex=v1;
    pArc->tailvex=v2;
    pArc->weight=cost;
    pArc->hlink=G->xlist[v1].firstout;
    pArc->tlink=G->xlist[v2].firstout;
    G->xlist[v1].firstout=pArc;
    G->xlist[v2].firstout=pArc;
}

例如,当我们需要初始化一个图map,含有4个顶点,3条边的时候。我们可以在main函数(或者另写一个初始化Init函数)里通过以下方法实现:

void InitMap(OLGraph &map)
{
    map.vexnum=4;   //初始化图的顶点数目
    AddVex(&map);   //为该图建立4个点
    AddArc(&map,0,1,1); //为该图建立3条权值为1的边 
    AddArc(&map,0,2,1);
    AddArc(&
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值