使用dev c++编写(1)以邻接矩阵形式创建一个无向图; (2)以邻接表的形式创建一个无向图。
时间: 2023-12-29 20:03:00 浏览: 23
以下是使用dev c++编写的无向图邻接矩阵和邻接表的代码示例:
1. 邻接矩阵形式创建无向图:
```c++
#include <iostream>
using namespace std;
const int MAXN = 100; // 最大顶点数
int matrix[MAXN][MAXN]; // 邻接矩阵
int main()
{
int n, m; // n为顶点数,m为边数
cout << "请输入顶点数和边数:";
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v; // u和v分别为边的两个端点
cout << "请输入第" << i << "条边的两个端点:";
cin >> u >> v;
matrix[u][v] = matrix[v][u] = 1; // 无向图,所以需要将两个方向都设置为1
}
cout << "邻接矩阵:" << endl;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cout << matrix[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
2. 邻接表形式创建无向图:
```c++
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 100; // 最大顶点数
struct Edge
{
int v; // 边的终点
Edge(int _v) : v(_v) {}
};
vector<Edge> adj[MAXN]; // 邻接表
int main()
{
int n, m; // n为顶点数,m为边数
cout << "请输入顶点数和边数:";
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
int u, v; // u和v分别为边的两个端点
cout << "请输入第" << i << "条边的两个端点:";
cin >> u >> v;
adj[u].push_back(Edge(v)); // 添加一条从u到v的边
adj[v].push_back(Edge(u)); // 添加一条从v到u的边
}
cout << "邻接表:" << endl;
for (int i = 1; i <= n; i++)
{
cout << i << ": ";
for (int j = 0; j < adj[i].size(); j++)
{
cout << adj[i][j].v << " ";
}
cout << endl;
}
return 0;
}
```