根据代码中的注释完善下列代码,不添加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-15 08:05:40 浏览: 91
下面是完善后的代码,其中缺少的函数需要根据注释进行实现:
```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
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] = 0;
}
}
//逐条插入边
int v1, v2, w;
for(int k = 0; k < G.arcnum; k++){
cin >> v1 >> v2 >> w; //输入边的起点、终点和权重
//检查输入顶点是否合法
if(v1 < 1 || v1 > G.vexnum || v2 < 1 || v2 > G.vexnum){
return ERROR;
}
//检查是否输入了自环边
if(v1 == v2){
return ERROR;
}
//插入边
G.arcs[v1-1][v2-1] = w;
G.arcs[v2-1][v1-1] = w;
}
return OK;
}
int InsertVex(AMGragh &G) {//在以邻接矩阵形式存储的无向图G上插入顶点
//插入新顶点
G.vexnum++;
cout << "请输入新顶点的值:";
cin >> G.vexs[G.vexnum-1];
//将新顶点的关系数组初始化为0
for(int i = 0; i < G.vexnum; i++){
G.arcs[G.vexnum-1][i] = 0;
G.arcs[i][G.vexnum-1] = 0;
}
return OK;
}
int OutputUDN(AMGragh G) {//输出图G
//输出顶点表
cout << "顶点表:" << endl;
for(int i = 0; i < G.vexnum; i++){
cout << "[" << i+1 << "] " << G.vexs[i] << endl;
}
//输出邻接矩阵
cout << "邻接矩阵:" << endl;
for(int i = 0; i < G.vexnum; i++){
for(int j = 0; j < G.vexnum; j++){
cout << G.arcs[i][j] << " ";
}
cout << endl;
}
return OK;
}
```
阅读全文