int InsertVex(AMGragh &G) {//在以邻接矩阵形式存储的无向图G上插入顶点 /**************begin************/ if(G.vexnum+1>MVNum)return error; int x; cin>>x; G.vexnum++; G.vexs[0][G.vexnum]=G.vexs[G.vexnum][0]=x; for(int i=1;i<=G.vexnum;i++) G.vexs[G.vexnum][i]=G.vexs[i][G.vexnum]=0; return ok;改正代码
时间: 2023-09-08 21:11:15 浏览: 93
int InsertVex(AMGraph &G) {
if(G.vexnum+1 > MAXVEX) return ERROR; // 判断是否超过最大顶点数
int x;
cin >> x;
G.vexnum++;
G.vexs[G.vexnum-1] = x; // 直接将新顶点存入末尾
for(int i = 0; i < G.vexnum-1; i++) {
G.arcs[i][G.vexnum-1] = G.arcs[G.vexnum-1][i] = 0; // 新顶点与其他点之间的边权值初始化为0
}
return OK;
}
相关问题
int InsertVex(AMGragh &G) {//在以邻接矩阵形式存储的无向图G上插入顶点 /**begin/ /**************end************/ }
函数名为InsertVex,作用是在邻接矩阵表示的无向图G中插入一个顶点。函数的参数为引用类型的AMGraph结构体,表示我们要修改的无向图。以下是函数的实现:
int InsertVex(AMGraph &G)
{
// 如果图已满,则无法插入新的顶点
if(G.vexnum == MAX_VERTEX_NUM)
{
cout<<"Error: the graph is full."<<endl;
return 0;
}
// 输入新顶点的信息
cout<<"Please input the vertex information:"<<endl;
VertexType v;
cin>>v;
// 在顶点表中添加新的顶点
G.vexs[G.vexnum] = v;
// 初始化新顶点的行和列
for(int i = 0; i < G.vexnum; i++)
{
G.arcs[G.vexnum][i] = 0;
G.arcs[i][G.vexnum] = 0;
}
// 更新顶点数目
G.vexnum++;
return 1;
}
完善下列代码 #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 }
#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] = 0;
}
}
//输入顶点信息
cout << "请输入" << G.vexnum << "个顶点信息:";
for(int i = 0; i < G.vexnum; i++) {
cin >> G.vexs[i];
}
//输入边信息
cout << "请输入" << G.arcnum << "条边信息(起点 终点 权值):";
for(int k = 0; k < G.arcnum; k++) {
int i,j,w;
cin >> i >> j >> w;
G.arcs[i-1][j-1] = w;
G.arcs[j-1][i-1] = w;//因为是无向图,所以需要对称存储
}
return OK;
}
int InsertVex(AMGragh &G) {//在以邻接矩阵形式存储的无向图G上插入顶点
if(G.vexnum == MVNum) {
return OVERFLOW;//超出最大顶点数
}
//输入新顶点信息
cout << "请输入新插入的顶点信息:";
cin >> G.vexs[G.vexnum];
G.vexnum++;//顶点数加一
//初始化邻接矩阵
for(int i = 0; i < G.vexnum; i++) {
G.arcs[i][G.vexnum-1] = 0;
G.arcs[G.vexnum-1][i] = 0;
}
return OK;
}
int OutputUDN(AMGragh G) {//输出图G
cout << "顶点表:" << endl;
for(int i = 0; i < G.vexnum; i++) {
cout << G.vexs[i] << " ";
}
cout << endl << "邻接矩阵:" << 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;
}
阅读全文