#include<stdio.h>
#define MAX_VERTEX_NUM 20
#define ERROR -1
#define TRUE 1
c盘可以扩大吗#define FALSE 0
typedef struct ArcNode{
int adjvex;
struct ArcNode *nextarc;
}ArcNode;
typedef struct VNode{
char data;
ArcNode *firstarc;
}VNode,AdjList[MAX_VERTEX_NUM];
typedef struct {
AdjList vertices;
int vexnum,arcnum;
}ALGraph;
开除通知void CreateAL(ALGraph *G);
int LocateVex(ALGraph G,char u);
void DFSTraver(ALGraph G,void (*Visit)(ALGraph G,int v));
void PrintElem(ALGraph G,int v);
void DFS(ALGraph G,int v);
int FirstAdjVex(ALGraph G,int v);
int NextAdjVex(ALGraph G,int v,int w);
int visited[MAX_VERTEX_NUM];
void (*VisitFunc)(ALGraph G,int v);
int main(){
脱颖而出是什么意思
ALGraph G;
CreateAL(&G);
printf("The Graph is:\n");
DFSTraver(G,PrintElem);
getch();
}
void CreateAL(ALGraph *T){
int i,j,m;
ArcNode *p,*s;狭路相逢的意思
char ch[100];
printf("Plea input the vexnum and arcnumm:\n");
scanf("%d%d",&(T->vexnum),&(T->arcnum));
printf("Plea input the vertexs:\n");
for(i=0;i<(T->vexnum);++i){
scanf(" %c",&(T->vertices[i].data));
T->vertices[i].firstarc=NULL;
古诗从军行王昌龄 }
for(i=0;i<(T->vexnum);++i){
m=0;
printf("Plea input the adjacents of %c\n",T->vertices[i].data);
scanf(" %s",&ch);
j=LocateVex(*T,ch[0]);
静静的歌词
p=(ArcNode *)malloc(sizeof(ArcNode));
p->adjvex=j;
p->nextarc=NULL;
T->vertices[i].firstarc=p;
while(ch[++m]!='\0'){
j=LocateVex(*T,ch[m]);
s=(ArcNode *)malloc(sizeof(ArcNode));
s->adjvex=j;
s->nextarc=NULL;
p->nextarc=s;
p=s;
}
}
}
int LocateVex(ALGraph G,char u){
int j;
int i=sizeof(G.vertices)/sizeof(VNode);
for(j=0;j<i;j++){
if(u==G.vertices[j].data)
return j;
ui怎么写 }
printf("Can not find the vertex! Plea press any key to exit\n");
getchar();
getchar();
exit(ERROR);
}
void DFSTraver(ALGraph G,void (*Visit)(ALGraph G,int v)){
磨砂鞋
int v;
VisitFunc=Visit;
for(v=0;v<G.vexnum;++v)
visited[v]=FALSE;
for(v=0;v<G.vexnum;++v)
if(!visited[v]) DFS(G,v);
}
void DFS(ALGraph G,int v){
int w;
visited[v]=TRUE;
VisitFunc(G,v);
for(w=FirstAdjVex(G,v);w>=0;w=NextAdjVex(G,v,w))
if(!visited[w]) DFS(G,w);
}
void PrintElem(ALGraph G,int v){
printf(" %3c",G.vertices[v].data);
}
int FirstAdjVex(ALGraph G,int v){
ArcNode *p=G.vertices[v].firstarc;
return p->adjvex;
}
int NextAdjVex(ALGraph G,int v,int w){
ArcNode *p,*s;
for(p=G.vertices[v].firstarc;p!=NULL;p=p->nextarc){
if(((p->adjvex)==w)&&(p->nextarc)){
s=p->nextarc;
return s->adjvex;
}
}
return ERROR;
}
_