用c语言实现无向图的邻接表算法,C 邻接表实现无向图实例代码

邻接表图的常用储存结构之一。邻接表由表头结点和表结点两部分组成,其中图中每个顶点均对应一个存储在数组中的表头结点。边没有方向的图称为无向图。本文我们用C 邻接表实现无向图。

用向量来存储一条邻接链表,存储可连通值。实现了判断是否连通,添加边,添加顶点的功能。

UnDirectGraph.h

#pragma once

include “stdafx.h”

include

using namespace std;

class UnDirectGraph

{

private:

int vCount;

vector *adj;

public:

int GetVCount();

UnDirectGraph(int vCount);

void AddEdge(int v,int w);

vector &Vadj(int v);

bool IsConnected(int v,int w);

};

UnDirectGraph.cpp

#pragma once

include “stdafx.h”

include “UnDirectGraph.h”

using namespace std;

UnDirectGraph::UnDirectGraph(int _vCount)

{

this->vCount=_vCount;

adj=new vector[vCount];

for (int i=0;i<vCount;i )

{

adj[i].clear();

}

}

void UnDirectGraph::AddEdge(int v,int w)

{

adj[v].push_back(w);

adj[w].push_back(v);

}

vector& UnDirectGraph::Vadj(int v)

{

return adj[v];

}

bool UnDirectGraph::IsConnected(int v,int w)

{

for (vector::iterator iter=adj[v].begin();iter!=adj[v].end();iter )

{

if (*iter==w)

{

return true;

}

}

return false;

}

int UnDirectGraph::GetVCount()

{

return vCount;

}

代码还算清晰,就不解释了,相信学习C 的同学都看得懂。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值