数据结构用C语言课程设计之图的深度遍历与广度遍历
下载后可任意编辑 数据结构用C语言课程设计之图的深度遍历与广度遍历 #include #include #define maxsize 1000 # define n 100 typedef struct { char vexs[n] ; int arcs[n][n] ; int num ; }G; typedef struct { int data[maxsize]; int front,rear; } V; void GInit(G *L) { L->num=0; } int GVexs(G *L) { return(L->num); } void GCreate(G *L) { int i,j; GInit(L); printf(“请输入顶点数目:\n“); scanf(“%d“, printf(“请输入各顶点:\n“); for(i=0;inum;i++) { f(stdin); scanf(“%c“, } printf(“请输入各顶点边的关系(1是有关0是无关):\n“); for(i=0;inum;i++) { for(j=0;jnum;j++) { scanf(“%d“, } } } void GOut(G L) { int i,j; printf(“\n图的顶点数目为:%d“,L.num); printf(“\n图的各顶点的信息为:\n“); for(i=0;irear=0; } int QueueIsEmpty(V sq) { if (sq.rear==sq.front) return(1); else return(0); } int QueueFront(V sq, int *e) { if (QueueIsEmpty(sq)) { printf(“queue is empty!\n“);return 0;} else { *e=sq.data[(sq.front)]; return 1;} } int QueueIn (V *sq, int x) // { if (sq->front==(sq->rear+1)%maxsize) { printf(“queue is full!\n“); return 0; } else { sq->data[sq->rear]=x; sq->rear=(sq->rear+1)%maxsize; return(1); } } int QueueOut(V *sq) { if (QueueIsEmpty(*sq)) { printf(“queue is empty!\n“); return 0; } else { sq->front=(sq->front+1)%maxsize; return 1; } } void BFS(G g,int v,int mark[]) { int v1,v2; V q; QueueInit( QueueIn( mark[v]=1; printf(“%c “,g.vexs[v]); while(QueueIsEmpty(q)==0) { QueueFront(q, QueueOut( for(v2=0;v2