以邻接表形式创建一个无向图。
时间: 2023-09-12 14:03:24 浏览: 33
好的,我们来创建一个无向图。首先,我们需要确定这个图有多少个节点和边。假设有 5 个节点和 7 条边,我们可以用邻接表来表示这个无向图。
邻接表是一种图的表示方法,它将每个节点与其相邻节点的列表关联起来。具体来说,对于每个节点,我们将其出边的目标节点存储在一个列表中。对于无向图,我们需要将每条边的两个端点都加入到对方的邻接表中。
下面是我们创建的无向图的邻接表表示:
```
节点 0: 1 -> 2
节点 1: 0 -> 2 -> 3 -> 4
节点 2: 0 -> 1 -> 4
节点 3: 1 -> 4
节点 4: 1 -> 2 -> 3
```
这个邻接表表示了一个包含 5 个节点和 7 条边的无向图。节点 0 和节点 1 相连,节点 1 和节点 2、3、4 相连,节点 2 和节点 0、1、4 相连,节点 3 和节点 1、4 相连,节点 4 和节点 1、2、3 相连。
相关问题
以邻接表形式创建一个无向图
好的,以下是以邻接表形式创建无向图的示例代码:
```python
class Graph:
def __init__(self, vertices):
self.V = vertices
self.adj_list = [[] for i in range(vertices)]
def add_edge(self, src, dest):
self.adj_list[src].append(dest)
self.adj_list[dest].append(src)
def print_graph(self):
for i in range(self.V):
print("Vertex " + str(i) + ":", end="")
for j in self.adj_list[i]:
print(" -> " + str(j), end="")
print("\n")
```
在这个示例中,我们定义了一个 `Graph` 类,其中包含两个方法:`add_edge` 和 `print_graph`。`add_edge` 方法用于添加一条边,参数为起点和终点的索引值。由于这是一个无向图,所以我们需要在起点和终点的邻接表中都添加对方的索引值。`print_graph` 方法用于打印整个图的邻接表。
下面是一个使用示例:
```python
g = Graph(5)
g.add_edge(0, 1)
g.add_edge(0, 4)
g.add_edge(1, 2)
g.add_edge(1, 3)
g.add_edge(1, 4)
g.add_edge(2, 3)
g.add_edge(3, 4)
g.print_graph()
```
输出结果如下:
```
Vertex 0: -> 1 -> 4
Vertex 1: -> 0 -> 2 -> 3 -> 4
Vertex 2: -> 1 -> 3
Vertex 3: -> 1 -> 2 -> 4
Vertex 4: -> 0 -> 1 -> 3
```
这个示例创建了一个包含 5 个顶点的无向图,并添加了 7 条边。输出结果显示了每个顶点的邻接表。
C++以邻接表形式创建一个无向图
下面是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对象,并向其中添加了几个边,最后打印整个图。