代码:
#include
using namespace std;
#define MAXVERTEXNUM 20
typedef enum { DG, UDG, DN, UDN }GraphKind;//图的类型{有向图、无向图、有向网、无向网}
//图的邻接矩阵存储方式
typedef struct MGraph {
char vex[MAXVERTEXNUM];//定点集
int edge[MAXVERTEXNUM][MAXVERTEXNUM];//边集
int vexnum, arcnum;//顶点数量,边数量
GraphKind kind;//图的类型
}MGraph;
//在图G中查找顶点在顶点集中的下标位置
int LocateVex(MGraph *g, char v) {
for (int i = 0; i vexnum; i++) {
if (g->vex[i] == v)
return i;
}
return -1;
}
//打印输出图的邻接矩阵表示
void PrintGraph(MGraph g) {
switch (g.kind)
{
case 0:cout
for (int j = 0; j
int i, j;
i = LocateVex(g,x);
j = LocateVex(g,y);
g->edge[i][j] = value;
}
//生成邻接矩阵存储的图 (无向图,有向图,无向网,有向网)
void CreateGraph(MGraph *g) {
int k = NULL;
cout k;
switch (k)
{
case 0:g->kind = DG; break;
case 1:g->kind = UDG; break;
case 2:g->kind = DN; break;
case 3:g->kind = UDN; break;
default:cout
for (int j = 0; j vexnum; j++) {
g->edge[i][j] = 0;
}
}
//输入边
switch (k)
{
case 1:cout
char temp[3]; cin >> temp; Setarc(g, temp[0], temp[1], 1);
};
break;
case 3:cout
char temp[3]; int v; cin >> temp; fflush(stdin); cin >> v; Setarc(g, temp[0], temp[1], v);
};
break;
default:cout
if (g->edge[site][i] != 0)
degree++;
}
if (g->kind == UDG || g->kind == UDN) {
cout
if (g->edge[i][site] != 0)
degree++;
}
cout
if (g->kind == UDG || g->kind == UDN) {
cout
cout
MGraph g;
CreateGraph(&g);
PrintGraph(g);
cout |