C++以邻接表形式创建一个无向图
时间: 2023-11-24 22:00:15 浏览: 69
下面是C++代码,使用邻接表实现无向图的创建:
```c++
#include<iostream>
#include<list>
using namespace std;
class Graph{
int V; //顶点数量
list<int> *adj; //邻接表数组
public:
Graph(int V); // 构造函数
void addEdge(int v, int w); // 添加边
void printGraph(); // 打印图
};
Graph::Graph(int V){
this->V = V;
adj = new list<int>[V];
}
void Graph::addEdge(int v, int w){
adj[v].push_back(w);
adj[w].push_back(v);
}
void Graph::printGraph(){
for(int i=0; i<V; i++){
cout<<"顶点"<<i<<"的邻接表:";
for(auto x:adj[i])
cout<<"-> "<<x;
cout<<endl;
}
}
int main(){
Graph g(5);
g.addEdge(0,1);
g.addEdge(0,4);
g.addEdge(1,2);
g.addEdge(1,3);
g.addEdge(1,4);
g.addEdge(2,3);
g.addEdge(3,4);
g.printGraph();
return 0;
}
```
在上面的代码中,我们定义了一个Graph类,其中包含一个构造函数和三个公共方法:addEdge(用于添加边),printGraph(用于打印图)和Graph构造函数。addEdge方法将两个顶点作为参数,并在它们之间创建一条边。printGraph方法遍历整个邻接表数组,打印每个顶点的邻接列表。Graph构造函数为邻接表数组分配内存。在main函数中,我们创建了一个Graph对象,并向其中添加了几个边,最后打印整个图。
阅读全文