C语言 数据结构 实验七
8647 - 实现图的存储结构
#include <iostream>
using namespace std;
#define MVNum 100
typedef int VertexType;
typedef int ArcType;
typedef int Status;
typedef struct {
VertexType vex[MVNum];
ArcType arcs[MVNum][MVNum];
int vexnum,arcnum;
}AMGraph;
int LocateVex(AMGraph G, VertexType u) {
for(int i = 0; i < G.vexnum; i++) {
if(u == G.vex[i]) {
return i;
}
}
return -1;
}
Status CreateDG(AMGraph &G) {
cin >> G.vexnum >> G.arcnum;
for(int i = 0; i < G.vexnum; i++) {
G.vex[i] = i + 1;
if(i == G.vexnum - 1) {
G.vex[i + 1] = -1;
}
}
for(int i = 0; i < G.vexnum; i++) {
for(int j = 0; j < G.vexnum; j++) {
G.arcs[i][j] = 0;
}
}
for(int i = 0; i < G.arcnum; i++) {
int a, b;
VertexType v1, v2;
cin >> v1 >> v2;
a = LocateVex(G, v1);
b = LocateVex(G, v2);
G.arcs[a][b] = 1;
}
return true;
}
void print(AMGraph G) {
for(int i = 0; i < G.vexnum; i++) {
for(int j = 0; j < G.vexnum; j++) {
cout << G.arcs[i][j] << ' ';
}
cout << endl;
}
}
int main() {
AMGraph G;
CreateDG(G);
print(G);
}
8648 - 图的深度遍历
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#define MAX_NAME 3
#define MAX_VERTEX_NUM 20
typedef int InfoType;
typedef char VertexType[MAX_NAME];
typedef enum {
DG, DN, AG, AN} GraphKind;
typedef struct ArcNode
{
int adjvex;
struct ArcNode *nextarc;
InfoType *info;
}ArcNode;
typedef struct
{
VertexType data;
ArcNode *firstarc;
}VNode, AdjList[MAX_VERTEX_NUM];
typedef struct
{
AdjList vertices;
int vexnum, arcnum;
int kind;
}ALGraph;
int LocateVex(ALGraph G, VertexType u)
{
for(int i=0; i < G.vexnum; i++)
if(0 == strcmp(u, G.vertices[