#define MaxVertexNum 30
typedef struct ArcNode {
int adjvex;
struct ArcNode *next;
} ArcNode;
typedef struct VNode {
char data;
ArcNode *first;
} VNode, AdjList[MaxVertexNum];
typedef struct {
AdjList vertices;
int vexnum, arcnum;
} ALGraph;
typedef struct {
char Vex[MaxVertexNum];
int Edge[MaxVertexNum][MaxVertexNum];
int vexnum, arcnum;
} MGraph;
void DFS_NOT_REC(MGraph G, int v) {
int w;
int top = -1;
int stack[30];
int visited[30];
for (int i = 0; i < G.vexnum; i++) {
visited[i] = 0;
}
stack[++top] = v;
visited[v] = 1;
int k;
while (top != -1) {
k = stack[top--];
printf("%d", k);
for (int i = 0; i < G.vexnum; i++) {
w = i;
if (G.Edge[k][i] != 0 && !visited[w]) {
stack[++top] = w;
visited[w] = 1;
}
}
}
}
int main() {
MGraph G;
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++)
G.Edge[i][j] = 0;
}
G.Edge[0][1] = G.Edge[0][3] = G.Edge[1][0] = G.Edge[1][2] = 1;
G.Edge[1][4] = G.Edge[2][1] = G.Edge[2][3] = G.Edge[2][4] = 1;
G.Edge[3][1] = G.Edge[3][2] = G.Edge[4][1] = G.Edge[4][2] = 1;
G.vexnum = 5;
DFS_NOT_REC(G, 0);
}