#include""
#include""
#define MVNum 30
#define QueueSize 30
#define VexType int
typedef struct ode
{
int adjvex;
struct ode *nextarc;
}ode;
typedef struct VexNode
{
VexType data;
ode *firstarc;
}VexNode,AdjList[MVNum];
typedef struct
{
int vexnum,um;
AdjList vertices;
}ALGraph;
int LocateVex(ALGraph *G, VexType v)
{
int i;
for(i=0;i<=G->vexnum;i++)
{
if(G->vertices[i].data==v)
return i;
}
return -1;
}
void CreateGraph(ALGraph *G)
{
int i,j,k;
int v1,v2;
ode *p=NULL,*q=NULL;
printf("请输入顶点数和边数(输入格式为:顶点数边数):\n");
scanf("%d%d",&G->vexnum,&G->um);
printf("请输入顶点信息(顶点以1为起始,每个顶点以回车作为结束):\n");
for(i=1;i<=G->vexnum;i++)
{
scanf("%d",&G->vertices[i].data);
G->vertices[i].firstarc=NULL;
}
printf("请输入边的信息(输入格式为:i,j):\n");
for(k=1;k<=G->um;k++)
{
scanf("%d,%d",&v1,&v2);
i=LocateVex(G,v1);
j=LocateVex(G,v2);
p=(ode*)malloc(sizeof(ode));
if(!p)
exit(1);
p->adjvex=j;
p->nextarc=G->vertices[i].firstarc;
G->vertices[i].firstarc=p;
q=(ode*)malloc(sizeof(ode));
if(!q)
exit(1);
q->adjvex=i;
q->nextarc=G->vertices[j].firstarc;
G->vertices[j].firstarc=q;
}
}
void PrintGraph(ALGraph *G)
{
int i;
ode *p=NULL;
for(i=1;i<=G->vexnum;i++)
{
printf("%d",G->vertices[i].data);
p=(ode*)malloc(sizeof(ode));
if(!p)
exit(1);
p=G->vertices[i].firstarc;
while(p)
{
prin
采用邻接表实现图的DFS和BFS 来自淘豆网m.daumloan.com转载请标明出处.