用栈实现图的遍历
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#define MVNum 100 //最大顶点数
using namespace std;
//边结点
typedef struct ArcNode {
int adjvex; //顶点的下标
struct ArcNode *nextarc; //指向下一条边的指针
} ArcNode, *Arc;
//顶点信息
typedef struct VNode {
char data;
ArcNode *firsttarc; //指向第一条依附该顶点的边的指针
} VNode, AdjList[MVNum]; //AdjList表示邻接表类型
//邻接表
struct ALGraph {
AdjList vertices;
int vexnum, arcnum; //总顶点数和总边数
};
//顶点v在G.verti00ces中的序号i
int LocateVex(ALGraph G, char v) {
for (int i = 0; i < G.vexnum; i++) {
if (v == G.vertices[i].data)
return i;
}
}
//创建有向图 G(邻接表)
void CreateUDG(ALGraph &G) {
printf("请输入总顶点数:");
scanf("%d", &G.vexnum);
printf("请输入总边数:");
scanf("%d", &G.arcnum);
printf("\n");
for (int m = 0; m < G.vexnum; m+