int delvex(mgraph *c) { int i=0,j; int m,v; if(c->vexnum<=0) { printf("图中已无顶点"); return 1; } printf("\n下面请输入您要删除的景点编号:"); scanf("%d",&v); while(v<0||v>key) { printf("\n输入错误!请重新输入:"); scanf("%d",&v); } m=locatevex(campus,v);
时间: 2024-04-28 09:22:30 浏览: 89
这段代码是用来删除无向图中某个顶点及其相关边的函数。其中,参数c是一个指向无向图的指针。函数中的delvex表示删除顶点的操作,函数的返回值为int类型。
函数中的第一个if语句用来判断图中是否还有顶点。如果顶点数小于等于0,说明图中已经没有顶点了,直接输出提示信息并返回1。
接着,函数会让用户输入要删除的景点编号v,并且对输入进行了判断。如果输入的v不在图中,会一直提示用户重新输入,直到输入正确。
最后,函数调用了locatevex函数来定位要删除的顶点v在图中的位置,并将其存储在变量m中。
相关问题
#include <stdio.h> #include <stdlib.h> #define MAX_VERTEX_NUM 20 #define INFINITY 65535 #define TRUE 1 #define FALSE 0 #define OK 1 #define FAIL 0 typedef int Status; typedef enum { DG, DN, UDG, UDN } GraphKind; typedef struct ArcCell { int adjvex; int weight; } ArcCell, AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { int vertex[MAX_VERTEX_NUM]; int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; int vexnum, arcnum; GraphKind kind; } MGraph; int LocateVex(MGraph G, int v) { int i; for (i = 0; i < G.vexnum; i++) if (G.vertex[i] == v) return i; return -1; } Status CreateDN(MGraph* G) { int i, j, k, w, v1, v2; ArcCell* p; printf("input the number of vertexes and arcs: "); scanf("%d,%d", &G->vexnum, &G->arcnum); for (i = 0; i < G->vexnum; i++) { printf("input the %dth vertex: ", i); scanf("%d", &G->vertex[i]); } for (i = 0; i < G->vexnum; i++) for (j = 0; j < G->vexnum; j++) G->arc[i][j] = INFINITY; for (k = 0; k < G->arcnum; k++) { printf("input the %dth arc: ", k); scanf("%d,%d,%d", &v1, &v2, &w); i = LocateVex(*G, v1); j = LocateVex(*G, v2); G->arc[i][j] = w; // G->arc[j][i] = w; } return OK; } void OutputDN(MGraph G) { int i, j; for (i = 0; i < G.vexnum; i++) { printf("%d:", G.vertex[i]); for (j = 0; j < G.vexnum; j++) printf("%5d ", G.arc[i][j]); printf("\n"); } } int main(void) { MGraph G; CreateDN(&G); OutputDN(G); printf("success\n"); return 0; }
这段代码是用 C 语言实现的一个有向图的建立和输出的程序,其中包含了邻接矩阵的定义和相关操作函数,可以用于创建一个带权有向图,并输出其邻接矩阵。具体实现包括创建有向图的函数 CreateDN,输出邻接矩阵的函数 OutputDN,以及定位某个顶点的函数 LocateVex 等。其中,CreateDN 函数会根据用户输入的顶点数、边数和每条边的起点、终点和权重信息来创建一个有向图,而 OutputDN 函数则会遍历整个邻接矩阵并输出其中的所有元素。
6-2 求采用邻接矩阵作为存储结构的无向图各顶点的度 分数 6 作者 DS课程组 单位 临沂大学 本题要求实现一个函数,输出无向图每个顶点的数据元素的值,以及每个顶点度的值。 函数接口定义: void degree(MGraph G); G为采用邻接矩阵作为存储结构的无向图。 裁判测试程序样例: #include <stdio.h> #define MVNum 100 //最大顶点数 typedef struct{ char vexs[MVNum]; //存放顶点的一维数组 int arcs[MVNum][MVNum]; //邻接矩阵 int vexnum,arcnum; //图的当前顶点数和边数 }MGraph; void degree(MGraph G); void CreatMGraph(MGraph *G);/* 创建图 */ int main() { MGraph G; CreatMGraph(&G); degree(G); return 0; } void CreatMGraph(MGraph *G) { int i,j,k; scanf("%d%d",&G->vexnum,&G->arcnum); getchar(); for(i=0;i<G->vexnum;i++) scanf("%c",&G->vexs[i]); for(i=0;i<G->vexnum;i++) for(j=0;j<G->vexnum;j++) G->arcs[i][j]=0; for(k=0;k<G->arcnum;k++) { scanf("%d%d",&i,&j); G->arcs[i][j]=1; G->arcs[j][i]=1; } } /* 请在这里填写答案 */ 输入样例: 例如无向图 无向图.png 第一行给出图的顶点数n和边数e。第二行给出n个字符,表示n个顶点的数据元素的值。后面是e行,给出每一条边的两个顶点编号。 4 5 ABCD 0 1 0 2 1 2 1 3 2 3 输出样例: 输出n个顶点的元素值,顶点的数据类型为字符型。以及各顶点的度值 A:2 B:3 C:3 D:2
这道题要求实现一个函数,输出无向图每个顶点的数据元素的值,以及每个顶点度的值。我们可以通过遍历邻接矩阵来计算每个顶点的度,然后输出即可。
具体实现可以参考以下代码:
```c++
void degree(MGraph G) {
for (int i = 0; i < G.vexnum; i++) {
int degree = 0;
for (int j = 0; j < G.vexnum; j++) {
if (G.arcs[i][j] == 1) {
degree++;
}
}
printf("%c:%d ", G.vexs[i], degree);
}
}
```
首先,我们在外层循环中遍历每个顶点,对于每个顶点,我们定义一个变量 `degree` 存储其度数,然后在内层循环中遍历其它顶点,如果邻接矩阵中该顶点与其它顶点之间存在边,则将 `degree` 值加 1。最后,输出该顶点的数据元素的值和其度数即可。
完整代码如下:
阅读全文