根据代码中的注释完善下列代码,不添加main函数,代码如下: #include<iostream> #define OK 1 #define ERROR 0 #define OVERFLOW -2 #define MVNum 100 //最大顶点数 using namespace std; typedef struct {//图的邻接矩阵存储表示 int vexs[MVNum]; //顶点表 int arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //图的当前点数和边数 }AMGragh; int CreateUDN(AMGragh &G,int vexnum,int arcnum) {//采用邻接矩阵表示法,创建无向网G } int InsertVex(AMGragh &G) {//在以邻接矩阵形式存储的无向图G上插入顶点 } int OutputUDN(AMGragh G) {//输出图G }
时间: 2024-01-16 22:03:19 浏览: 82
下面是完善后的代码:
```c++
#include<iostream>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MVNum 100 //最大顶点数
using namespace std;
typedef struct {//图的邻接矩阵存储表示
int vexs[MVNum]; //顶点表
int arcs[MVNum][MVNum]; //邻接矩阵
int vexnum,arcnum; //图的当前点数和边数
}AMGragh;
int CreateUDN(AMGragh &G, int vexnum, int arcnum) {//采用邻接矩阵表示法,创建无向网G
G.vexnum = vexnum;
G.arcnum = arcnum;
for (int i = 0; i < G.vexnum; i++) {
for (int j = 0; j < G.vexnum; j++) {
G.arcs[i][j] = INT_MAX; // 初始化邻接矩阵为无穷大
}
}
for (int i = 0; i < G.vexnum; i++) {
cin >> G.vexs[i]; // 输入顶点的值
}
int v1, v2, weight;
for (int k = 0; k < G.arcnum; k++) {
cin >> v1 >> v2 >> weight; // 输入边的信息
G.arcs[v1][v2] = weight;
G.arcs[v2][v1] = weight; // 无向图矩阵对称,所以对称位置也要赋值
}
return OK;
}
int InsertVex(AMGragh &G) {//在以邻接矩阵形式存储的无向图G上插入顶点
if (G.vexnum == MVNum) {
return ERROR; // 顶点数已满,无法添加
}
int newVex;
cout << "请输入新顶点的值:";
cin >> newVex;
G.vexs[G.vexnum] = newVex;
for (int i = 0; i < G.vexnum; i++) {
G.arcs[i][G.vexnum] = INT_MAX; // 新顶点所在的列初始化为无穷大
G.arcs[G.vexnum][i] = INT_MAX; // 新顶点所在的行初始化为无穷大
}
G.vexnum++;
return OK;
}
int OutputUDN(AMGragh G) {//输出图G
cout << "输出无向网:" << endl;
for (int i = 0; i < G.vexnum; i++) {
for (int j = 0; j < G.vexnum; j++) {
if (G.arcs[i][j] == INT_MAX) {
cout << "∞" << "\t"; // 无穷大用符号“∞”表示
} else {
cout << G.arcs[i][j] << "\t";
}
}
cout << endl;
}
return OK;
}
```
其中,CreateUDN函数用于创建无向网,采用邻接矩阵存储,顶点数为vexnum,边数为arcnum。在函数中,先将邻接矩阵初始化为无穷大,然后输入每个顶点的值和每条边的信息,最后返回OK表示创建成功。
InsertVex函数用于在无向网中插入新顶点。如果当前顶点数已满,返回ERROR;否则,输入新顶点的值,将新顶点所在的行和列初始化为无穷大,然后将顶点数加1,返回OK。
OutputUDN函数用于输出无向网。输出时,如果邻接矩阵中某个元素为无穷大,用符号“∞”表示。
阅读全文