图结构

    技术2024-08-20  67

    图结构

    #include<stdio.h> #define MAX 20 typedef struct Grap{ char v[MAX]; int e[MAX][MAX]; int vc,ec; }G,*grap; int visited[MAX]; G *creat(char a[],int m,int n){//创建图 G t1,*t; t=&t1; t->vc = m; t->ec = n; int i,j,k,value; for(i=0;i<t->vc;i++) t->v[i]=a[i]; for(i=0;i<t->vc;i++){ for(j=0;j<t->vc;j++) t->e[i][j] = 0; } for(k=0;k<t->ec;k++){ printf("输入边的两个顶点的序号():"); scanf("%d %d %d",&i,&j,&value); t->e[i][j] = value; t->e[j][i] = value; } for(i=0;i<t->vc;i++){ for(j=0;j<t->vc;j++) printf("%d ",t->e[i][j]); printf("\n"); } return t; } void DFshow(G *t,int n){//深度优先遍历 int j; printf("%d\n",t->vc); if(n>=t->vc) { printf("输入非法\n"); }else{ printf("%c ",t->v[n]); visited[n] = 1; for(j=0;j<t->vc;j++){ if(t->e[n][j] > 0 && visited[j] == 0) DFshow(t,j); } } } void BFshow(G *t,int n){//广度优先遍历 int front = -1,rear = -1,j; char Q[MAX]; if(n>=t->vc) printf("输入非法\n"); else { printf("%c",t->v[n]); visited[n] = 1; Q[++rear] = n; while(front != rear){ n = Q[++front]; for(j=0;j<t->vc;j++) if(t->e[n][j] > 0 && visited[j] == 0){ printf("%c ",t->v[j]); visited[j] = 1; Q[++rear] = j; } } } }
    Processed: 0.010, SQL: 9