Redian新闻
>
请教如何实现图的数据结构C++
avatar
请教如何实现图的数据结构C++# JobHunting - 待字闺中
c*z
1
请问graph是不是大概这样用adjacent matrix 这样实现的。多谢了
class graph
{
public:
vector getAllnodes()
vector getadjacentnodes( node* start)
{
//parse the adjacentmatrix and return the adjacent nodes
}
private:
vector arrnodes;
vector> adjacentMatrix;
}
class node
{
bool bvisited;
int nodenumber;
}
void bfs(graph g, node* start, node* end)
{
auto arrNodes = g.getadjacentnodes(start) // 这样的到相领的点?
}
avatar
n*n
2
可以用map+set, 每个node作为map的key,每个node的adjacent list 作为map的value
存在set里
avatar
I*n
3
-------
美国CS面试工作交流群QQ: 167615205
--------
看下面的code
#include
#include
#include
#include
using namespace std;
struct vertex{
typedef pair ve;
vector adj; //cost of edge, destination vertex
string name;
vertex(string s)
{
name=s;
}
};
class graph
{
public:
typedef map vmap;
vmap work;
void addvertex(const string&);
void addedge(const string& from, const string& to,
double cost);
};
void graph::addvertex(const string &name)
{
vmap::iterator itr=work.begin();
itr=work.find(name);
if(itr==work.end())
{
vertex *v;
v= new vertex(name);
work[name]=v;
return;
}
cout<}
void graph::addedge(const string& from, const string& to, double
cost)
{
vertex *f=(work.find(from)->second);
vertex *t=(work.find(to)->second);
pair edge = make_pair(cost,t);
f->adj.push_back(edge);
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。