logo资料库

邻接表存储图深度优先广度优先遍历.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
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
分享到:
收藏