typedef char VType;//顶点类型 typedef int WType;//权值类型 struct graph { VType V[MaxSize];//一维数组存储顶点 WType R[MaxSize][MaxSize];//二维数组存储关系 int v_num;//顶点个数 int arc_num;//边或弧的数目 }Graph;从键盘获取图中顶点数据和关系 //1.获取顶点数据进行存储 //2.关系数组进行赋初值 //3.获取关系进行相应位置的存储//打印函数
时间: 2023-07-19 09:46:37 浏览: 85
以下是一个简单的实现,可以从键盘获取顶点数据和关系,并打印出图的信息:
```c++
#include <iostream>
using namespace std;
typedef char VType; //顶点类型
typedef int WType; //权值类型
const int MaxSize = 100; //最大顶点数
struct graph {
VType V[MaxSize]; //一维数组存储顶点
WType R[MaxSize][MaxSize]; //二维数组存储关系
int v_num; //顶点个数
int arc_num; //边或弧的数目
};
//从键盘获取图中顶点数据和关系
void createGraph(graph &G) {
cout << "请输入顶点个数:";
cin >> G.v_num;
cout << "请输入边或弧的数目:";
cin >> G.arc_num;
//获取顶点数据
for (int i = 0; i < G.v_num; i++) {
cout << "请输入第" << i+1 << "个顶点:";
cin >> G.V[i];
}
//关系数组进行赋初值
for (int i = 0; i < G.v_num; i++) {
for (int j = 0; j < G.v_num; j++) {
G.R[i][j] = 0;
}
}
//获取关系进行相应位置的存储
for (int k = 0; k < G.arc_num; k++) {
int i, j, w;
cout << "请输入一条边(起点 终点 权值):";
cin >> i >> j >> w;
G.R[i-1][j-1] = w; //存储边的权值,注意要将输入的下标减1
}
}
//打印函数
void printGraph(graph G) {
cout << "顶点个数为:" << G.v_num << endl;
cout << "边或弧的数目为:" << G.arc_num << endl;
cout << "顶点信息为:";
for (int i = 0; i < G.v_num; i++) {
cout << G.V[i] << " ";
}
cout << endl;
cout << "关系矩阵为:" << endl;
for (int i = 0; i < G.v_num; i++) {
for (int j = 0; j < G.v_num; j++) {
cout << G.R[i][j] << " ";
}
cout << endl;
}
}
int main() {
graph G;
createGraph(G);
printGraph(G);
return 0;
}
```
注意:这里的图是用邻接矩阵来表示的,如果是用邻接表实现的话,输入和打印的方式会有所不同。
阅读全文