int num;
struct arcnode *nextarc;
}arcnode;
typedef struct vexnode
{
data;
char
arcnode *firstarc;
}vexnode;
typedef struct
{
vexnode vertex[max];
int vexnum;
int arcnum;
}ALG;
typedef struct
{
int data[max+10];
int front;
int rear;
}queue;
int visited[max];
queue
int locate(ALG *g,char v)
{
q;
ÁÚ½Ó±í´æ´¢Í¼Éî¶ÈÓÅÏȹã¶ÈÓÅÏȱéÀú.txt18ÓµÓгÏʵ£¬¾ÍÉáÆúÁËÐéα£»ÓµÓгÏʵ£¬¾ÍÉáÆúÁË
ÎÞÁÄ£»ÓµÓÐ̤ʵ£¬¾ÍÉáÆúÁ˸¡Ô꣬²»ÂÛÊÇÓÐÒâµÄ¶ªÆú£¬»¹ÊÇÒâÍâµÄʧȥ£¬Ö»ÒªÔø¾ÕæÊµÓµÓÐ
£¬ÔÚһЩʱºò£¬´ó¶ÈÉáÆúÒ²ÊÇÒ»ÖÖ¾³½ç¡£//ÓÃÁÚ½Ó±í´æ´¢µÄͼ£¬È»ºóÓÃÉî¶ÈÓÅÏȺ͹ã¶ÈÓÅÏÈ
·Ö±ð±éÀúÕû¸öͼ
#include
#define max 20
#include
typedef struct arcnode
{
int i;
for(i=0;ivexnum;i++)
if(g>vertex[i].data==v)
break;
return(i);
}
void
{
creatgraph(ALG *g)
int i;
char
arcnode *rear,*temp;
c;
printf("ÊäÈëËùÓкÍ%cÏàÁ¬µÄ¶¥µã£¬ÒÔ*½áÊø\n",g>vertex[i].data);
if((c=getchar())!='*')
{
*)malloc(sizeof(arcnode));
*)malloc(sizeof(arcnode));
printf("ÊäÈëͼµÄ¶¥µãÊýºÍ±ßÊý\n");
scanf("%d%d",&g>vexnum,&g>arcnum);
getchar();
printf("ÊäÈëËùÓж¥µã\n");
for(i=0;ivexnum;i++)
{
scanf("%c",&(g>vertex[i].data));
g>vertex[i].firstarc=NULL;
}
getchar();
for(i=0;ivexnum;i++)
{
rear=(arcnode
g>vertex[i].firstarc=rear;
rear>num=locate(g,c);
while((c=getchar())!='*')
{
temp=(arcnode
temp>num=locate(g,c);
rear>nextarc=temp;
rear=temp;
}
}
rear>nextarc=NULL;
getchar();
}
}
void
{
}
}
void
{
depthfirstsearch(ALG
*g,int
vi)
arcnode *rear;
putchar(g>vertex[vi].data);
visited[vi]=1;
rear=g>vertex[vi].firstarc;
while((rear!=NULL)&&(!visited[rear>num]))
{
depthfirstsearch(g,rear>num);
rear=rear>nextarc;
travel(ALG *g)
q.data[q.rear]=v;
q.rear++;
}
int deletequeue()
{
int t;
t=q.data[q.front];
q.front++;
return(t);
}
int empty()
{
if(q.front==q.rear)
return 1;
return 0;
}
void
{
breadfirstsearch(ALG
*g)
int v,t;
arcnode *rear;
for(v=0;vvexnum;v++)
{
if(!visited[v])
{
int v;
for(v=0;vvexnum;v++)
if(!visited[v])
depthfirstsearch(g,v);
enterqueue(int v)
}
void
{
putchar(g>vertex[v].data);
visited[v]=1;
enterqueue(v);
}
while(!empty())
{
t=deletequeue();
rear=g>vertex[t].firstarc;
while((rear!=NULL)&&(!visited[rear>num]))
{
putchar(g>vertex[rear>num].data);
visited[rear>num]=1;
enterqueue(rear>num);
rear=rear>nextarc;
}
}
main()
}
}
void
{
}
int i;
ALG g;
creatgraph(&g);
for(i=0;i