假设图G为无向无权图,以邻接矩阵作为存储结构,实现以下图的基本操作:增加一个新顶点v,InsertVex(G, v); 【算法思想】 首先判断插入的合法性,然后将顶点的数量加1,并将新顶点v存入顶点表,邻接矩阵相应位置的元素置为0。
时间: 2024-05-11 16:18:02 浏览: 108
头歌数据结构图的邻接矩阵存储及遍历操作
5星 · 资源好评率100%
算法实现:
1. 判断插入的合法性,即判断当前图中是否已经存在顶点v;
2. 如果不存在,则将图中的顶点数加1,并将新顶点v存入顶点表中;
3. 在邻接矩阵中增加一行一列,表示新顶点v与其他顶点的关系,并将所有元素初始化为0。
代码示例:
```
#define MAXVEX 100 // 最大顶点数
typedef struct {
char vexs[MAXVEX]; // 顶点表
int arcs[MAXVEX][MAXVEX]; // 邻接矩阵
int vexnum, arcnum; // 顶点数、边数
} MGraph;
// 插入新顶点
void InsertVex(MGraph *G, char v) {
int i, j;
// 判断是否已经存在顶点v
for (i = 0; i < G->vexnum; i++) {
if (G->vexs[i] == v) {
printf("顶点%c已经存在\n", v);
return;
}
}
// 添加新顶点v
G->vexs[G->vexnum] = v;
G->vexnum++;
// 初始化邻接矩阵
for (i = 0; i < G->vexnum; i++) {
G->arcs[i][G->vexnum - 1] = 0;
G->arcs[G->vexnum - 1][i] = 0;
}
}
```
阅读全文