#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
typedef struct arcnode {
int adjvex;
arcnode* nextarc;
}arcnode;
typedef struct vnode {
char data;
arcnode* firstarc;
}vnode,adjlist[100];
typedef struct {
adjlist vertices;
int arcnum, vexnum;
}algraph;
int locate(algraph a, char o) {
int i;
for (i = 0; i < a.vexnum; i++)
if (a.vertices[i].data == o)return i;
}
/*void init(algraph* &a) {
a = new algraph;
a->arcnum = 0;
a->vexnum = 0;
}*/
void creatgraph(algraph &a) {
int i, j, k;
char m, n;
//init(a);
printf("请输入点的个数\n");
scanf_s("%d", &a.vexnum);
printf("请输入边的个数\n");
scanf_s("%d", &a.arcnum);
printf("请输入各个边\n");
for (i = 0; i < a.vexnum; i++)
{
scanf_s(" %c", &a.vertices[i].data);
a.vertices[i].firstarc = NULL;
}
printf("请输入各边邻接的两个点\n");
for (i = 0; i < a.arcnum; i++) {
scanf_s(" %c%c",&m,&n);
//scanf_s("%c",&n,sizeof(char));
j = locate(a, m);
k = locate(a, n);
//printf("%d", j);
arcnode* b;
b = new arcnode;
b->adjvex = k;
b->nextarc = a.vertices[j].firstarc;
a.vertices[j].firstarc = b;
}
}
int visited[100] = { 0 };
//void dfs(algraph a, char v) {
// int i;
// i = locate(a, v);
// printf("%c", v);
// visited[i] = 1;
// arcnode*p = a.vertices[i].firstarc;
// while (p) {
// v =a.vertices[p->adjvex].data;
// if(!visited[locate(a,v)])dfs(a, v);
// p = p->nextarc;
// }
//}
void dfs(algraph a, int v) {
printf("%c", a.vertices[v].data);
visited[v] = 1;
arcnode* p;
p = a.vertices[v].firstarc;
while (p) {
if (visited[p->adjvex] == 0)dfs(a, p->adjvex);
p = p->nextarc;
}
}
int main() {
algraph c;
creatgraph(c);
int i;
printf("请输入从哪个顶点开始:\n");
scanf_s("%d", &i);
dfs(c,i);
}
能调试解决吗